#include <stdio.h>
int main()
{
/*
// 陷阱1(若条件为判断两个值是否相等,少些一个“=”号,后果很严重)
// 解决对策:判断两个值是否相等时,将常量写前面,变量写后面,若少写一个“=”号,编译器就会报错,因为常量不允许修改
int a = 10;
if(5 == a) // 如果写成 if(a == 5) 少些一个“=”号,即: if(a = 5)会有警告,但不会报错,此时相当于对a赋值为5,由于任何数都有真假性,导致条件为真,后果很严重
{
printf("a等于5\n");
}
else
{
printf("a不等于5\n");
}
*/
/*
// 陷阱2
int a = 10;
a == 15; // 手贱,多写了一个“=”号,变成了条件运算符(会有警告)
printf("a=%d\n", a); // 运行结果:a=10。并没有对a重新赋值15
*/
/*
// 陷阱3
if( 5 > 6); // 手贱,多写了一个“;”号,(会有警告)导致后面大括号内的代码成了一个代码块,必然执行,需特别注意!!!!
{
printf("A\n"); // 条件不成立也执行了(此时已为代码块)
}
*/
/*
// 陷阱4(错误代码:使用了未定义的变量)
// 解决对策:如果要在if语句中定义新的变量,必须用大括号“{ }”,一般情况下也不建议不写大括号
if(10 > 6)
{
int a = 5; // 变量a的作用域为if后面的大括号内
} // 变量a再内存中被销毁了
printf("a的值为:%d", a); // 变量a已经被销毁,再使用变量a相当于没有定义,报错信息:(error: use of undeclared identifier 'a' printf("a的值为:%d", a);)
*/
// 陷阱5(错误代码:变量作用域不明确)
/*if(10 > 6)
int a = 5; // 变量a的作用域不明确:对于if语句来说,a的作用于为if语句,但从代码格式上来说a的作用于是为main函数(再main函数的大括号内)编译器不明白变量a的作用于,导致变量a的作用于不明确,报错信息(error: expected expression )*/
return 0;
}
|
|