这个c语言表达式结果为什么是4?急求

a+b,18+(b=4)*3,(a/b,a%b)

这是“逗号”表达式。
“逗号”表达式, 先从左到右走一遍,最后结果等于 最右边的表达式的结果。
例如:
x = (a+b,18+(b=4)*3,(a/b,a%b));
执行:
(1) a+b
(2) 18+(b=4)*3
(3) (a/b,a%b)
分成
a/b
a%b
----------
x 结果 是 a%b 的 结果。
由于你前面没有给出 a,b 的初值,从 “从左到右走一遍” ,其中有个 b=4,
所以 b 的结果 是 4。a 等于几,我不知道。
x = a % b; 整数a除以整数b得余数运算,b=4, 所以 x 的结果 只可能是 0,1,2,3 之一。
不可能是 4。
要么,你的式子抄错了。追问

a=10.b=4.x=2.5.y=3.5

追答

a=10;b=4;
a%b = 2. 答案2。
可以自己打印下式:
printf("%d", (a+b,18+(b=4)*3,(a/b,a%b)) );

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-03-21
你这段代码看不出来是做什么的,把整个函数贴上来看看。追问

只是一个表达式而已,这是一本书上的题,就是这样写的。

这个c语言表达式结果为什么是4?急求
x 结果 是 a%b 的 结果。由于你前面没有给出 a,b 的初值,从 “从左到右走一遍” ,其中有个 b=4,所以 b 的结果 是 4。a 等于几,我不知道。x = a % b; 整数a除以整数b得余数运算,b=4, 所以 x 的结果 只可能是 0,1,2,3 之一。不可能是 4。要么,你的式子抄错了。

表达式a> b> a: c> d的结果为4,为什么?
表达式:a>b?a:c>d?a:d的结果为4。解析:1、由于C语言的相同优先级运算符运算规则为从左至右依次运算,而条件运算符具有右结合性,所以表达式:a>b?a:c>d?a:d优先运算c>d?a:d,得出的结果为4;2、再运输a>b?a:4,得出的结果为4。所以最终得出的结果为4。

C语言中: int x,a,b; x=(a=3,b=++a); x为什么等于4
最后执行x=b;所以x的值是4

c语言中int x=2;2*x,x+=2语句的结果为什么是4?
3. `x += 2`:这是一个复合赋值操作符,相当于 `x = x + 2`,这里的 `x` 值为之前的 2,所以 `x` 被更新为 2 + 2 = 4。因此,整个过程中 `x` 的值从开始的 2 经过表达式 `2 * x` 和复合赋值 `x += 2` 的计算,最终变成了 4。所以最终的结果是 4。

c语言中 x=(1,2,3,4);x的值是多少
值为4.(1,2,3,4)这个是逗号运算表达式. 值是最右的值,也就是4 所以 这里相当于x=4;

C语言题,为什么结果是5,4,-5
-x , 得到 -5 压入堆栈,第四个参数是 -5 再计算 --x, 前缀--, 先自减x, 再求值,因此 x 变成 4, 表达式的值也是4, 压入第三个参数,再计算 ++x, 前缀++, 先自增x, 再求值,因此 x 变成 5, 表达式的值也是5, 压入第二个参数,因此 三个参数分别是 5, 4, -5 ...

语句(1,2,3,4)的结果是什么
结果是4,在c语言中逗号运算符是先从左到右计算各表达式的值,最终的值是最后一表达式的值。所以(1,2,3,4)最终的值是:4

c语言中,执行表达式x=a=4,6*2后x值为
逗号是优先 但6*2没有赋值给x和a并且这是两个式子 所以x=a=4 程序说明一切

一个c语言问题 int x=11; 则表达式(x++*1\/3)为什么为4??
x++先执行,那么就是 12*1\/3=4 自增和自减的符号优先级高于*和\/

c语言问题 六年级 请问加号在后面不是后算么?为什么输出结果是4 3 还...
j=(i=2,i++,i++);这个是右边是逗号表达式,取最右边表达式的值。i++是后置++,是先取i的值再把i的值加1 开始时,i的值是2,然后,i++的结果是2,然后i加1变成3,再i++的结果3,i再加1变成4,所以j的值是3,而i的值是4 ...

相似回答