10+‘a’+i*f-d/e
在计算机执行时从左至右扫描,运算次序为:
①,进行10+'a'的运算,先将'a'转换成整数97,运算结果为 107
②,由于“*”比“+”优先,先进行i*f的运算。先将i与f都转换成double型,运算结果为 double 型。
我想问大家的是,为什么①,不是放在②,之后执行?为什么先蹦出一个107 ??
最要用实际程序来验证先执行①,再执行②
谢谢。
我同意chiconysun的说法,运行的时候从左往右读入数据和运算符的到当前操作符的后一个运算符为止,比较优先级来决定运算顺序。这是对于混合运算的规则,但我不清楚这是普遍遵循的规则还是和编译器有关。
用实际程序来验证:
运行
int i, j; //未进行初始化
int x = i + 1 + 3 * j; //关于 i + 1 和 3 * j 哪一项先进行运算
运行时检测到错误“变量 i 未被初始化的情况下被使用”,可以从中看出是 i + 1 先于 3 * j 进行运算。(否则就会报出变量 j 的错误信息。)