|
20鱼币
- #include <iostream>
- using namespace std;
- int _tmain(int argc, _TCHAR* argv[])
- {
- int i = -5*6--7;
- cout<<i<<endl;
- return 0;
- }
复制代码
- #include <iostream>
- using namespace std;
- int _tmain(int argc, _TCHAR* argv[])
- {
- int i = -5*6- -7; //为什么改成这样就不报错,求原理。
- cout<<i<<endl;
- return 0;
- }
复制代码
对于 8 -- 5
编译器是把这个理解成下面这样吧?
(8 --) 5
我去翻了一下运算符优先级表
后--优先级高于前--
我写了这样的代码测试
- int main(int argc, char *argv[])
- {
- int i = -5 * 6--7;
- int j = -5 * (6--)7;
- int k = -5 * 6(--7);
- return 0;
- }
复制代码
- $ clang -g -Wall -o main main.c
- main.c:4:19: error: expression is not assignable
- int i = -5 * 6--7;
- ~^
- main.c:4:21: error: expected ';' at end of declaration
- int i = -5 * 6--7;
- ^
- ;
- main.c:5:20: error: expression is not assignable
- int j = -5 * (6--)7;
- ~^
- main.c:5:23: error: expected ';' at end of declaration
- int j = -5 * (6--)7;
- ^
- ;
- main.c:6:20: error: expression is not assignable
- int k = -5 * 6(--7);
- ^ ~
- 5 errors generated.
复制代码
关键是这两个
~^这两个符号标的位置是一样的
这个标在了后面
所以,我感觉应该把 8 -- 5
理解成这样?
(8 --) 5
|
最佳答案
查看完整内容
对于 8 -- 5
编译器是把这个理解成下面这样吧?
(8 --) 5
我去翻了一下运算符优先级表
后--优先级高于前--
我写了这样的代码测试
关键是这两个
~^这两个符号标的位置是一样的
这个标在了后面
所以,我感觉应该把 8 -- 5
理解成这样?
(8 --) 5
|