我在目标C中编写了一个程序.
int a = 3; a = (a++) * (a++); NSLog(@"a= %d",a);
返回输出:a = 11
而在c#中,输出为12.
谁能解释一下目标C中++运算符的行为差异?
++运营商没有区别.问题是你正在调用未定义的行为.具体来说,您在a同一序列点中读取和更新变量两次,这在ANSI C规范中明确未定义.从该表达式获得的值可能因编译器而异,甚至可能在同一编译器的版本之间有所不同,甚至在启用了单独优化的相同编译器版本的调用之间也是如此.
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |