新手求解释下这个。
c=num1+++num2 请问到底是c=(num1++)+num2还是c=num1+(++num2) 新手哦 求解释下。 有优先级的问题,不过结果是不是一样啊。。。括号里的先运算(从左到右)
就跟数学里的结合律一样 这个为什么不自己编个小程序测试下呢?一试不是就知道了吗? ←_← 自己用print调试下不要光知道问要自己调试啊 自己调试看看,用TCHAR宏打印结果
feixiangmenghu 发表于 2014-7-27 09:23
自己调试看看,用TCHAR宏打印结果
←_← 标准C需要 TCHAR←_←??
直接printf();输出就好了啊 你觉得问这个问题的人知道什么是宏么
如果你很喜欢纠结这些语法问题
建议你看看
C陷阱与缺陷 那边就有讲像i+++++i这种 看看 ++和--,+,-运算符属于同一优先级,从右到左结合,所以这个表达式是这样的c = (num1++) + num Atman 发表于 2014-7-27 17:34
++和--,+,-运算符属于同一优先级,从右到左结合,所以这个表达式是这样的c = (num1++) + num
不一定的哦 不同编译器对 ++ --的结合方向有可能不一样的。这个我觉得没有一个统一的答案 上面说错了:funk:,++,--和+(加),-(减)不是同一优先级,首先对于=号是右结合,而右边是个加法运算,至于c = (num1++) + num2,还是c = num1 + (++num2)要看不同的编译器了,如果是VC的话在c = num1+++num2这个表达式中++num2优先于num1++;vc不是可以反编译吗,看一下汇编代码就清楚了。{:1_1:} 后面的,因为就好像
b = 1
a = b++的结果是a = 1
a = ++b的结果是a = 2一样,++总是最后算 c=(num1++)+num2
虽然num1最后结果一样,但是c=num1+++num2 这样写的话,运行起来会慢很多吧 Atman 发表于 2014-7-27 23:21
上面说错了,++,--和+(加),-(减)不是同一优先级,首先对于=号是右结合,而右边是个加法运算, ...
这么说就对了 好像跟编译器有关的,不同的编译器对++--的处理不一样 首先必须说应该自己动手实验一下,再者,这样的写法不是一个好的编程习惯,不必纠结这些 从汇编看来就是num1+num2;
页:
[1]