C / C++ 的奇怪自增运算
// 1.Java 代码
int n = 1;
// 输出 6
System.out.println(++n * ++n);
/*
自增运算符优先级高于乘法运算符,
从左到右先计算左式为 2,
然后计算右式为 3,
最后进行乘法运算,输出结果为 6
*/
// 2.C 代码
int n = 1;
// 输出 9
printf("%d", ++n * ++n);
/*
本人猜测,可能与 C / C ++ 的
指针特性有关,即传地址运算,从左到右
运行至右式时,右式自增为 3,由于地址
相同,左式也为 3,输出为 9
当然以上只是猜测,没有具体实践证明
欢迎各位同学评论交流!
*/
// 3.C++ 代码
int n = 1;
// 输出 9
cout << ++n * ++n << endl;
/*
本人猜测,可能与 C / C ++ 的
指针特性有关,即传地址运算,从左到右
运行至右式时,右式自增为 3,由于地址
相同,左式也为 3,输出为 9
当然以上只是猜测,没有具体实践证明
欢迎各位同学评论交流!
*/