C语言的运算符问题?

来源:百度知道 编辑:UC知道 时间:2024/07/02 05:38:53
已知整数a=1,b=2,c=3;求表达试执行后abcd的值

表达式 d=--a||b++||c++;

执后值分别为:0,3,3,1 这里我不明白的就是c的值 c++先用后加值不是应该是4吗?
已知整数a=1,b=2,c=3;求表达试执行后abcd的值

d=(a++,--b,b--,--c,,c--)

执后值分别为:2,0,1,2 这里我不明白的就是d的值,这里的C--不是选用后减d=3才对呀??这是为什么??

M||N...如果M的值为非0,那么就不计算N的值了
M&&N...如果M的值为0,那么就不计算N的值了

在这里M和N是表达式...

你说的第一题...因为前面是非0值.所以不计算后面C++的值了.

你明白了吗?

你补充的那题...是这样的...括号里的是逗号表达式...值是最后一个表达式的值.也就是说.d的值是C--的值没错.但是,因为括号内是逗号表达式.他要自左向右运算..所以在C--前,他执行了a++,--b,--C,也就是说,等运算到C--时,已经执行了--C.C的值减1.

第一题:
关键在表达式 d=--a||b++||c++;当计算到b++时他为真,所以后面的c++将不进行计算。所以结果如此了。在||和&&时都必须注意,&&是前面的为假,则后面的将不进行计算;||是前面的为真,则后面的不进行运算。
第二题:d=(a++,--b,b--,--c,,c--) //多了个逗号
d=(a++,--b,b--,--c,c--) 这是个逗号表达式,d=最后表达式的值,在--c,先减后c的值变为2;c--是先得到表达式c--的值,再减,所以d=2,而c=1.这个可以举例子的,假如c=30,这结果为2,0,28,29;
这种题你可以一步一步的调试,很容易看到结果。

这事一条‘或’语句,当执行到第一个不为0的地放就结束了!所以当执行完b++时,就停止,不再执行后边的c++,所以c还是3.而前边的a和b都发生了变化!
补充的问题同上!