可能重复:
为什么+++++ b在C中不起作用?
我从David Simon的"嵌入式软件入门"第113页得到了这个.
我在下面看到这句话:
iHoursTemp = iHoursTemp + iZoneNew ---iZoneOld;
Run Code Online (Sandbox Code Playgroud)
你能真的在这条线上有三个减号吗?三重减号是什么意思?
我相信这是一个C编程声明.
Rob*_*obᵩ 92
它相当于:
iHoursTemp = iHoursTemp + (iZoneNew--) - iZoneOld;
Run Code Online (Sandbox Code Playgroud)
这符合最大 - 蒙克原则
imr*_*eal 49
正确答案是(如Rob所说)以下内容:
iHoursTemp = iHoursTemp + (iZoneNew--) - iZoneOld;
Run Code Online (Sandbox Code Playgroud)
原因是这样而不是
iHoursTemp = iHoursTemp + iZoneNew - (--iZoneOld);
Run Code Online (Sandbox Code Playgroud)
是一种称为最大咬合策略的约定,它表示如果下一个令牌有多种可能性,请使用(咬合)具有最多字符的那个.在这种情况下,可能性-和--,--显然是更长的时间.
Ola*_*che 12
根据Draft C++ 11(PDF) 2.5预处理令牌,第3节和草案C11(PDF) 6.4词汇元素,第4节,编译器将最长可能的字符序列解析为下一个标记.
这意味着---将被解析为两个记号--和-,这给
iHoursTemp = iHoursTemp + (iZoneNew--) - iZoneOld;
Run Code Online (Sandbox Code Playgroud)
这也表明,如果您不确定优先级或解析规则,请使用括号来阐明代码.
等于
iHoursTemp = iHoursTemp + (iZoneNew--) -iZoneOld;
#include <stdio.h>
int main()
{
int iHoursTemp = 2, iZoneOld = 3, iZoneNew = 4;
//2+4 - 2 = 4
iHoursTemp = iHoursTemp + iZoneNew ---iZoneOld;
//2+(4--) -3 = 3
printf("\n :%d \n", iHoursTemp);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
给我3个gcc.
| 归档时间: |
|
| 查看次数: |
4538 次 |
| 最近记录: |