我在编程时忘记了函数调用后忘记括号,但是我只收到警告,我忽略了:
main.cpp:7:15: warning: expression result unused [-Wunused-value]
if (i == 0) clearDisplay;
^~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)
刚做的时候也会发生同样的事情
int i = 0;
i;
Run Code Online (Sandbox Code Playgroud)
为什么这不是编译器错误?
#include <iostream>
void clearDisplay(void);
int main(void){
for(int i = 0; i < 2; i++){
if (i == 0) clearDisplay;
}
}
void clearDisplay(void){
std::cout << "test" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
编辑:与没有括号的g ++"调用"函数相反(不是f()而是f;).为什么总是返回1?我不问为什么它被隐式浇铸为数字,但为什么像它确实编译器不提醒我关于if(i=0)到if(i==0)
这不是编译器错误的原因相同:
for(int i = 0; i < 2; i++){
Run Code Online (Sandbox Code Playgroud)
看看i++.这是一个你完全忽略的结果.但这完全合法.为什么?因为您可以忽略表达式的结果.
为了有所帮助,当您忽略没有副作用的表达式结果时,编译器会发出警告.但是如果有一个语言规则忽略没有副作用的表达式是违法的,那就需要编译器完美地判断表达式是否有副作用,这基本上是不可能的.
| 归档时间: |
|
| 查看次数: |
3264 次 |
| 最近记录: |