C语言题,a,c为啥等于0?

如题所述

第1个回答  2020-09-19
首先计算部分的逗号两边没有被括在一起,逗号左边的就是先计算++a,这时a=1,再计算a-=a,a就等于0,所以到这里c和a都等于0,最后再计算逗号右边的,a+=b这里a和b为0,再算b+=4,b就等于4。最后结果就是a=0,b=4,c=0,所以选择c答案。追问

逗号表达式不是返回最右边的值吗

第2个回答  2020-09-19
c=(a=a-++a),(a=a+b,b=b+4);
c=(a=a-(++a)),(a=a+b,b=b+4);
这个表达式中++的优先级最高,
先执行++a;a的值变成1,c = (a = 1-1);a = 0,c = 0;
a = a+b;此时a b的值都是0;结果 a = 0;最后执行 b = 0+4;b的结果是4;追问

逗号表达式不是返回最右边的值吗

追答

()优先级最高,其次是++;然后是=号,逗号的优先级最低;整个表达式计算完毕后格式如下:c = 0,a = 0,b = 4;
b的值是整个表达式的值;但是输出的是a,b,c的值;

这种格式才是输出表达式的值:printf("%d",(c=(a-=++a),(a+=b,b+=4))); 这时候输出的就是表达式最右边的值,也就是b的值,结果是4;

本回答被提问者和网友采纳

C语言题,a,c为啥等于0?
首先计算部分的逗号两边没有被括在一起,逗号左边的就是先计算++a,这时a=1,再计算a-=a,a就等于0,所以到这里c和a都等于0,最后再计算逗号右边的,a+=b这里a和b为0,再算b+=4,b就等于4。最后结果就是a=0,b=4,c=0,所以选择c答案。

c语言的选择题,答案为什么是0 啊,很不解!
因为十进制数范围在-65536~65535,这里写65536超过了写成二进制是111111111111111(十五个1,这是65535),再加一就变成了1000000000000000(这是0的补码),所以为0。

迭代法求平方根a,c语言新手求助,为什么结果是0?0代表什么?
因为在GCC的编译器上,main()一定要是int型的,即int main(){},而有些编译器就可以是void main(){}比如visual c++,如果是int main(){},最好有一个return 0,因为我们知道,只要不是void类型的函数都要有一个返回值,当然这个return 0;也可以不写,不过编译器会返回一个warning警告,而不是一...

C语言二级:为啥0AB中第一个字符0,不就应该跳出循环吗?请指点
因为字符'0'对应的ascii码是48,字符'\\0'对应的ascii码是0.

C语言,第六题为什么是0
二、如果表达式中间的等于号(=)有两个,则这个表达式是9\/2*2 ==9*2\/2,这个表达式是有意义的。这是因为,C语言中,“==”(双等于号)是一个判断相等的“逻辑运算符”,它的作用是比较前后表达式的值是否相等。如:5==6;前后不等,表达式的值是“逻辑假”,用0表示;5==5,前后相等,...

c语言中!((a<b)&&!c||1)值为什么是0
因此((a<b)&&!c||1)的值必为真(我们先当1处理),而!((a<b)&&!c||1)则为假,假在C语言中用0表示。所以!((a<b)&&!c||1)值是0。先算a<b的逻辑值,在判断c是否是0,如果是0,!c为真,否则,!c为假;再判断 a<b && !c 整体的逻辑值,同真为真,否则为假。再求出1+a...

(a,b,c)=0是什么意思?
首先因为“==”号比“=”的优先级高,所以先执行b==c,明显b等2,c等3两者不等,所以为0(逻辑运算,当b不等c时这个等式的值就为假即是0),再执行a=0,就把0值赋给了a。1、赋值语句本身也是一个表达式,也是有返回值的,它的返回值就是赋值给变量的值,比如b=1这个语句,会把1...

c语言。。求和怎么答案都等于0啊!
回答:先要设置一个sum的初始值。你这样当然是0了。在scanf("%d#%d#%d",&a,&b,&c);后面加一个sum=0;就行了。

c语言计算文本文件的大小为什么总是0?
估计是文件打开失败了 所以文件指针为空

C语言代码问题,下面代码的声明中int a=0,b=0,c=0为啥不可直接声明int a...
不做为变量名,这就能保证程序中变量名使用得正确。初始化变量并不是必须的,但是在c语言中未初始化的变量是其数据类型允许范围内的任意值(静态变量除外),为了防止运算中出错,一般建议定义变量后,立即初始化。你初始化为0就是保证以后在调用这个变量值的时候就不会出现未初始化的错误。

相似回答