面试—每日一题(4)
又到了每日一道面试题了!今天题比较简单,但是确实你平时没有注意到的问题!
题如下:
下面是C语言中两种if语句判断方式。请问哪种写法更好?为什么?
int n;
if (n == 10) // 第一种判断方式
if (10 == n) // 第二种判断方式
呵呵!是的,两种方法在判断n是否等于10的效果是一样的!但是,在实际的编程中,这是一个细节问题。后一种肯定比前一种好?why?
现在,我来告诉大家why?主要是后一种代码具有纠错能力!何为纠错能力!大家都知道,一个程序的运行,有编译,和运行,一般我们直接是编译运行的!那么编译的时候就和检查代码的语法错误,对于逻辑错误,并不是在编译时能给出的!编译器能检查你的语法错误,是的,后一种就是一种很好的纠错代码!
你懂得!在C++中“==”是等于号,而“=”是赋值符号!当你写以上两种判断是否相等,没有任何问题,但是,有的时候你一不小心把“==”写成了“=”,那就是致命的问题!
是的,这是一个很小的问题,如果本来是n==10,你写成了n=10,在编译时,是不会报错的,运行时也是没有错误的。但是,对于几万行的程序,你要发现一个这样的错误,如果运气不好的话,给你两、三个小时,也是找不出来的。但是,如果本来是n==10,你却写成了10=n,呵呵,对不起,编译器不会放过这个小错误的!此时,在编译的时候就会报错的,10=n,这种语法在C++中是不允许的。
同时,还有如果你定义指针了,判断指针是否为空,那该如何写呢?还是和这个问题一样!
int *P;
if (NULL == P)
if (P == NULL)
我相信,你知道选择哪个了!呵呵!
所以,这种细节问题,在面试的时候,考官会注意到的,这个是习惯问题,细节问题决定成败。同时,细节也决定一个程序的好坏。好了,自己在想想把,如果,看本博文之前,你是写的n==10,嘿,伙计改进改过来吧,是的,就是10=n。好了,写了这么多,我相信,你懂得!各位,晚安!