| 
 | 
 
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 
 
 
 
 
 
 
 |