黑马程序员技术交流社区

标题: 关于if语句的使用注意点 [打印本页]

作者: 诺微_    时间: 2014-11-20 23:08
标题: 关于if语句的使用注意点
#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;
}

作者: weizhang00    时间: 2014-11-21 00:40
我觉得的编程风格应该习惯成这样的
if(){


不要养成if()


这样的
作者: CrazyMan    时间: 2014-11-21 00:46
今天刚看到这里
作者: caozhichao    时间: 2014-11-21 03:09
学习一下
作者: hityu    时间: 2014-11-21 08:10
可以写在博客里啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2