#include <stdio.h>
int main ()
{
int a=13;
a=5+ a++;//19
printf("%d\n",a);
return 0;
}
输出的18是在devc++运行的,19的是在visual studio下运行的,想问一下两个运行出来的结果不一样的原因是什么
#include <stdio.h>
int main ()
{
int a=13;
a=5+ a++;//19
printf("%d\n",a);
return 0;
}
按照教科书上教的标准的c语法,a++比整个表达式的优先级要低,所以应该先执行a=5+a,后执行a++
但是不同IDE的优先级并不相同,有些是把一部分表达式拆开来当做一个语句去执行的,而不是一行代码作为一个整体
你在各种不同的IDE上执行结果不同是很正常的
所以真正写代码的时候不要写这种挖坑的代码
这么多年了考试还考这个纯粹是内卷卷出来的
-=-=-=
ps:因为在devc++里赋值比++优先级低,所以是先执行5+a,再执行a++,最后把5+a的缓存结果赋值给a,所以a的值经历了一个13->14->18的过程
而在vs中,a值的变化是13->18->19
你只要保证等号两边不要出现同一个变量,或者在等号两边出现同一个变量时不要使用++,那么不同IDE下结果就一致了