关于C/C++的Warning解释
关于C/C++的Warning解释
如何发现更多Warning
在编译时加上命令
-Wall
和-Wextra
即
g++ a.cpp -o a.out -Wall -Wextra
Warning是极为有用的,可以提醒你一些意想不到的问题
关于Warning和error
operation on ‘i’ may be undefined
对
i
的操作并没有被定义(执行)
这种情况常出现于复合语句内,个人认为属于编译器的问题
a[i++]=x;
//改为下面的版本即可避免Warning
a[i]=x;
i++;
//复合语句还是少用点好,
但有的时候,写在for
里的复合语句的执行顺序可能不是你希望的
在有一题中,我WA0的原因就是因为复合语句
for (i = 1, x[++n] = A - a[n - 1]; i < n; i++) x[i] = a[i] - a[i - 1];
//但它的执行顺序并没有如我所想
n++;
for (i = 1, x[n] = A - a[n - 1]; i < n; i++) x[i] = a[i] - a[i - 1];
//相比之下,改成这样却能AC
value computed is not used
这个值没有被使用
在有逗号出现的地方Warning较多
s = x[1], y[1];
//注意,这里y[1]虽然在表达式中
//但它的值却并没有对表达式的值(变量s)的值有影响
//请确认是否把其它运算符号写成了逗号
s=x[1]+y[1];
‘gets’ was not declared in this scope
the `gets' function is dangerous and should not be used.
关于
gets
,它已经死了
对于CPP玩家,可以转用getline
使用:getline(cin,一个string类)