啊哈哈 发表于 2014-7-27 00:34:01

新手求解释下这个。

c=num1+++num2   请问到底是c=(num1++)+num2还是c=num1+(++num2)   新手哦 求解释下。

main__H________ 发表于 2014-7-27 07:47:32

有优先级的问题,不过结果是不是一样啊。。。
括号里的先运算(从左到右)
就跟数学里的结合律一样

仰望天上的光 发表于 2014-7-27 08:38:51

这个为什么不自己编个小程序测试下呢?一试不是就知道了吗?

牡丹花下死做鬼 发表于 2014-7-27 08:49:35

←_← 自己用print调试下不要光知道问要自己调试啊

feixiangmenghu 发表于 2014-7-27 09:23:45

自己调试看看,用TCHAR宏打印结果

牡丹花下死做鬼 发表于 2014-7-27 10:34:38

feixiangmenghu 发表于 2014-7-27 09:23
自己调试看看,用TCHAR宏打印结果

←_← 标准C需要 TCHAR←_←??
直接printf();输出就好了啊 你觉得问这个问题的人知道什么是宏么

牡丹花下死做鬼 发表于 2014-7-27 10:35:34

如果你很喜欢纠结这些语法问题
建议你看看
C陷阱与缺陷

牡丹花下死做鬼 发表于 2014-7-27 10:36:05

那边就有讲像i+++++i这种

dfdgfdgfdgh 发表于 2014-7-27 13:29:32

看看

Atman 发表于 2014-7-27 17:34:16

++和--,+,-运算符属于同一优先级,从右到左结合,所以这个表达式是这样的c = (num1++) + num

牡丹花下死做鬼 发表于 2014-7-27 20:26:04

Atman 发表于 2014-7-27 17:34
++和--,+,-运算符属于同一优先级,从右到左结合,所以这个表达式是这样的c = (num1++) + num

不一定的哦

Nightnjl 发表于 2014-7-27 21:58:45

不同编译器对 ++ --的结合方向有可能不一样的。这个我觉得没有一个统一的答案

Atman 发表于 2014-7-27 23:21:43

上面说错了:funk:,++,--和+(加),-(减)不是同一优先级,首先对于=号是右结合,而右边是个加法运算,至于c = (num1++) + num2,还是c = num1 + (++num2)要看不同的编译器了,如果是VC的话在c = num1+++num2这个表达式中++num2优先于num1++;vc不是可以反编译吗,看一下汇编代码就清楚了。{:1_1:}

mumudontcry 发表于 2014-7-28 02:32:12

后面的,因为就好像
b = 1
a = b++的结果是a = 1
a = ++b的结果是a = 2一样,++总是最后算

zianan 发表于 2014-7-28 02:59:59

c=(num1++)+num2
虽然num1最后结果一样,但是c=num1+++num2 这样写的话,运行起来会慢很多吧

牡丹花下死做鬼 发表于 2014-7-28 08:54:26

Atman 发表于 2014-7-27 23:21
上面说错了,++,--和+(加),-(减)不是同一优先级,首先对于=号是右结合,而右边是个加法运算, ...

这么说就对了

Sccot丶 发表于 2014-7-30 23:50:14

好像跟编译器有关的,不同的编译器对++--的处理不一样

时空过客 发表于 2014-7-31 08:57:06

首先必须说应该自己动手实验一下,再者,这样的写法不是一个好的编程习惯,不必纠结这些

千亩计者 发表于 2016-8-16 00:39:12

从汇编看来就是num1+num2;
页: [1]
查看完整版本: 新手求解释下这个。