c语言入门自学零基础,c语言入门自学

  c语言入门自学零基础,c语言入门自学

  第一篇前言。表情评价1。隐式类型转换2。算术转换3。运算符的属性汇总。

  简介:表达式求值表达式求值的顺序部分由运算符的优先级和组合决定。

  类似地,一些表达式的操作数可能需要在求值期间转换为其他类型。

  1.隐式类型转换C的整数算术运算总是至少以默认整数类型的精度执行。

  为了获得这种精度,表达式中的字符和短整型操作数在使用前被转换成普通整数,这种转换称为integer。

  升职。

  整数提升的意义:

  表达式的整数运算要在CPU相应的运算器中执行,CPU中整数运算器(ALU)的操作数的字节长度一般是int的字节长度,也是CPU通用寄存器的长度。

  所以,即使两个char类型加在一起,实际上也应该在CPU执行的时候,先在CPU中转换成整数操作数的标准长度。

  CPU(通用CPU很难直接实现两个8位字节的直接相加(虽然机器指令中可能有这样的字节相加指令)。因此,表达式中长度可能小于int长度的各种整数值,在送到CPU执行运算之前,必须先转换成int或无符号int。

  //示例1

  int main() {

  char a=5;

  //00000000000000000000000000000101

  //00000101 -a

  char b=126

  //00000000000000000000000001111110

  //11111110 -b

  char c=a b;

  //00000101 -a

  //01111110 -b

  //000000000000000000000000000000001//塑料升降

  //00000000000000000000000001111110

  //00000000000000000000000010000011

  //10000011-c

  //

  printf(%d\n ,c);//塑料提升

  //111111111111111111111111000011-内存中的补码

  //11111111111111111111111110000010

  //10000000000000000000000001111101 - -125

  返回0;

  }

  将a和b的值提升为正常整数,然后执行加法运算。

  加法运算完成后,结果将被截断,然后存储在。

  塑造的例子:

  //示例1

  int main()

  {

  char a=0xb6//10110110 //塑料升降

  //11111111111111111111111110110110

  //11111111111111111111111110110101

  //10000000000000000000000001001010

  //-0x4A

  short b=0xb600

  int c=0xb6000000

  if(a==0xb6)

  printf( a );

  if(b==0xb600)

  printf( b );

  if(c==0xb6000000)

  printf( c );

  返回0;}

  这时,a的值已经变了-0x4A。

  b也是如此。

  最终的输出结果是

  //示例2

  int main()

  {

  char c=1;

  printf(%u\n ,sizeof(c));

  printf(%u\n ,sizeof(c));

  printf(%u\n ,sizeof(-c));

  返回0;

  }例2中,只要C参与表达式运算,就会发生塑形提升,表达式C就会被提升,所以sizeof( c)是4个字。

  部分。

  表达式-c在整形上也会有所改进,所以sizeof(-c)是4字节,但是sizeof是1字节。

  2.算术转换如果一个运算符的操作数属于不同的类型,那么除非其中一个操作数转换为另一个操作数的类。

  类型,否则操作无法进行。下面的层次系统称为普通算术变换。

  长双份

  两倍

  漂浮物

  无符号长整型

  长整型

  无符号整数

  Int如果一个操作数的类型在上面的列表中较低,那么必须先将其转换为另一个操作数的类型,然后再执行。

  算算。

  警告:

  但是算术转换要合理,否则会有一些潜在的问题。

  浮点f=3.14

  int num=f;//隐式转换,会有精度损失

  3.有三个因素会影响运算符属性的复杂表达式的计算。

  运算符的优先级。运算符的组合是否控制求值顺序。

  两个相邻运算符中的哪一个将首先被执行?取决于他们的优先级。如果它们具有相同的优先级,则取决于它们的组合。

  还有一些错误码,不能给出准确的计算顺序。

  //表达式

  c-c;

  我不知道。先(c-1) (c-1)再加起来。

  或c (c-1)

  例如c=2

  第一种方法的结果是1。

  第二种方法的结果是3。

  注:如上,运算符的优先级只能决定自减的运算先于的运算,我们没有办法得到。

  众所周知,运算符左操作数的获取是在右操作数之前或之后计算的,因此结果是不可预测和不明确的。

  是的。

  //代码

  #包含stdio.h

  int main()

  {

  int I=1;

  int ret=(I)(I)(I);

  printf("%d\n ",ret);

  printf("%d\n ",I);

  返回0;

  }

  //尝试在linux环境和VS2013环境下的gcc编译器中执行,看结果。

  VS2013环境的结果

  看看产生不同结果的相同代码。为什么?

  简单看一下汇编代码。可以分析清楚。

  当执行这段代码中的第一个代码时,不确定是否会执行第三个,因为根据运算符的优先级和组合,无法确定第一个和第二个。

  三个领导位置的顺序。

  总结:如果我们写的表达式不能通过运算符的属性确定唯一的计算路径,那么这个表达式就是有问题的。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 日语零基础从什么东西开始学,怎么从零基础学日语
  • 零基础学编程的网站,零基础学编程的软件,你知道吗-
  • ps教程从零开始学,零基础学葫芦丝
  • 电脑编程初级入门,零基础电脑编程入门自学
  • WEB前端开发程序员,零基础学web前端开发难吗
  • python初学者入门,零基础学Python
  • 用python编写我的世界,零基础学Minecraft编程
  • 零基础学哪个编程语言-,零基础学编程应该学什么语言
  • 零基础学python好学吗,零基础学python怎么学
  • 零基础学python用哪本书好,适合初学python的书
  • 零基础python入门看哪本书好,自学python最好的入门书籍
  • 零基础学化妆好学吗,零基础自学化妆
  • 零基础学程序员从哪里开始,零基础,想要成为一名程序员要怎么做
  • Python入门视频,python零基础教学视频
  • python人工智能编程实例,零基础学会python人工智能
  • 留言与评论(共有 条评论)
       
    验证码: