c语言中 经过以下几个语句为什么 count 这个变量的值是18?
int i=3;int count;count=(++i)+(++i)+(++i);
count 的值不是,应该是15吗?
count=(++i)+(++i)+(++i);语句如何进行编译,C语言标准没有明确规定。
对于该语句,各种编译器具有不同的编译行为。
假设该语句括号内的值分别:①、②、③,(①) + (②) + (③)
有些编译器这么算:先算(++i),i = 4,此时①的值还没算,接着算(++i),i = 5,此时②的值还没算,然后算(++i),i = 6,此时③的值还没算,最后算(++i)+(++i)+(++i),此时①②③的值算出来,① = 6,② = 6,③ = 6,相加,6 + 6 + 6,结果为18。
有些编译器这么算:先算(++i),i = 4,此时①的值还没算,接着算(++i),i = 5,此时②的值还没算,然后算(++i)+(++i),此时①和②的值算出来,① = 5,② = 5,相加,5 + 5,然后再算(++i), i = 6,此时③的值还没算,最后算(++i)+(++i)+(++i),此时③的值算出来,③ = 6,相加,5 + 5 + 6,结果为16。
还有编译器这么算:先算(++i),i = 4,此时①的值已经算出来了,① = 4,接着算(++i),i = 5,此时②的值已经算出来了,② = 5,然后算(++i)+(++i),此时①和②的值加起来,5 + 5,然后再算(++i), i = 6,此时③的值算出来,③ = 6,最后算(++i)+(++i)+(++i),此时①②③的值相加,4 + 5 + 6,结果为15。
有图有真相,三款编译器结果大比拼!
跟运算符运算优先顺序有关吧
c++我试了,结果就是18,小括号有限度最高内部全都先运算结束了才运算括号外的,于是就成了i自加三次,最后成了6+6+6,
i=3;c#我也试过了,结果是15..似乎是从左到右依次运算(但是遇见括号依然优先),于是就成了4+5+6=15。。。。
int k = 3,count;以上调试皆在VS2010平台下调试完成,并且有结果显示
i的初始值是3不是4;
如图c语言 图中程序中的count=0是什么意思 还有第14行count为什么要等于...
cout是记数的功能,count=0就是初始值为0.之后的count=3不能鼓励的看,看下面执行的语句,应该是三个数一行,这种输出的格式,之后再把count的值赋为0
为什么c语言中count是关键字, count是什么意思?
count在来C语言只能说是一个标识符,它即不是关键字,也不是具有特殊作用的源某个控制符。一般来说,在C语言编程中定义一个count变量或者字百面常量用于计数。比如下面的程序中用count统计度一个整数中二进制问表示中答二进制位值为1的个数。在程序设计语言中,标识符是用作程序的某一元素的名字的...
详解宏定义(#define)
因为INT1a1,b1;被宏代换后为:int*a1,b1;即定义的是一个指向int型变量的指针a1和一个int型的变量b1.而INT2a2,b2;表示定义的是两个变量a2和b2,这两个变量的类型都是INT2的,也就是int*的,所以两个都是指向int型变量的指针。 所以两者区别在于,宏定义只是简单的字符串代换,在预处理阶段完成。而typede不是...
c语言编程中count++与++count的区别
count++是指先进行运算,然后值加1,如count=5;int i=count++ \/\/此时,i=5i=count; \/\/此时 i=6而++count则是先使值加1,然后运算,如count=5;int i=++count; \/\/此时i=6;i=count; \/\/此时i=6
C语言 int i=3;-i++=?为什么呀?
这里是后缀++,表示执行表达式后i再自增1,也就是说,-i++是先执行-i,然后i再自增1 如果是-++i,则其值为-4 -i++和-++i执行后i的值都为4,它们的不同之处在于++在后面的时候是先执行别的语句再自增,++在前面则先自增再执行别的语句 ...
c语言运行以下程序段后变量a的值是:( ) int a=0, b=3;
a+b=3,a++先判断在自增,判断为0,自增后为1,因为判断为0,所以逻辑短路,后面的也就不判断了 switch里面是0,所以case 0执行成功,也就是说从case 0后面的语句都要执行,知道遇到break a++;case 1:b++;case 2:a+=b;也就是这些都有执行 所以是6 选D 不懂再问懂请采纳 ...
C(14) 若有定义:double a=22;int i=0,k=18;则不符合C语言规定的赋值语句...
C错,只有C中的%运算符运算的对象只能是整数,a为double,所以错
C语言问题,麻烦详解。 设有变量定义char a='a';int i=3,j=5,b;float
1、这种连续赋值的语句是从右往左进行计算的 y+=i-=j*=++x,就相当于 y=y*(x=x+1,x);i=i-j;y=y+i 2、逗号的运算符优先级最低,所以就想到于(a=a+i),a+j 3、括号的优先级最高 其他的具体的运算符优先级可参考书本或者网络中的讲解 ...
C语言:语句 for( i=0 ; i++<10 ; ) ; 执行结束后,变量i的值为10...
i++ 是后缀加加,在表达式里用原值,出了表达式自增1。条件 i++ < 10 可以分解成: i<10, i=i+1;所以 上面循环语句执行,可以分解成:int i;for (i=0; ;){ if (i<10) { printf("%d\\n",i); \/\/这里插一句打印语句,看看循环变量的变化 i=i+1;} else {i=i+1; break;...
C语言int i=5; i+=++i;的值是12.求具体解释
int 5;(初始化一个整数5)i+=++i;这句要拆分理解,先是左边(i+=)这个等价于i=i+(最终的i的值)然后是右边的(++i) 就是理解为i在原来基础上加上1,这种(++1)必须是加了1才能赋值给左边!因为这是赋值语句,所以右边就等于i=5+1=6 然后 就是算i+=,最终左边的值就等于i+...