请教 逗号运算符问题 各位师兄指点指点小弟
b的值 是不是这样求的 答案说是5表达式a = (b = 3, 4, c = b++ + 5, ++c + ++b)
b = 3 c = 3++ + 5, ++c + ++b
b = 4 c =8 9 +5
b = 4(这个4 是b++得来的 不是b = 3, 4 里面的4)能理解成 b = 3, 4中的 4是打马虎眼 没有用的么
那我想问b = 3, 4什么条件 b = 4(b什么时候等于3, 后面的4)
为什么b 不是直接等于4
这样写 是不是b就直接等于4 了 (b = 3, 4)在一个小括号里?
(b = 4)
说真的,纠结这类问题没有意义
int a, b, c;
a = (b = 3, 4, c = b++ + 5, ++c + ++b);
00A3204Emov dword ptr ,3
00A32055mov eax,dword ptr
00A32058add eax,5
00A3205Bmov dword ptr ,eax
00A3205Emov ecx,dword ptr
00A32061add ecx,1
00A32064mov dword ptr ,ecx
00A32067mov edx,dword ptr
00A3206Aadd edx,1
00A3206Dmov dword ptr ,edx
00A32070mov eax,dword ptr
00A32073add eax,1
00A32076mov dword ptr ,eax
00A32079mov ecx,dword ptr
int a, b, c;
a = (b = 3, 4, c = b++ + 5, ++c + ++b);
00A3207Cadd ecx,dword ptr
00A3207Fmov dword ptr ,ecx
printf("a = %d, b = %d, c = %d\n", a, b, c);
00A32082mov eax,dword ptr
00A32085push eax
00A32086mov ecx,dword ptr
00A32089push ecx
00A3208Amov edx,dword ptr
00A3208Dpush edx
00A3208Epush offset string "a = %d, b = %d, c = %d\n" (0A37BFCh)
00A32093call _printf (0A31343h)
00A32098add esp,10h
#include <stdio.h>
int main(void)
{
int a, b, c;
a = (b = 3, 4, c = b++ + 5, ++c + ++b);
printf("a = %d, b = %d, c = %d\n", a, b, c);
return 0;
}
a = 14, b = 5, c = 9
请按任意键继续. . .
页:
[1]