您的位置:首页 > 其它

关于if语句的条件

2013-09-25 09:07 169 查看
(每个程序猿多少有些完美主义,对于程序猿来说写的每一行代码都像自己的孩子一样必须严格要求,甚至有些苛刻,在这里我就死磕自己一回。)

欢迎wangyou

提问:

下面关于if条件判断的写法一样吗?




char *str = GetString(...);
int strLen = strlen(str);
//! 满足条件的情况:如果字符串str不为空
//! 1
if (strLen)
{
    ...
}

//! 2
if (strLen != 0)
{
    ...
}

//! 3
if (0 != strLen)
{
    ...
}

//! 4
if (!(0 == strlen))
{
    ...
}

//! 5
if (0 != str)
{
    ...
}

以上1、2、3都是可以判断字符串是不是为空。无论编译还是逻辑上都对,但是我要转牛角尖了。




(写代码的最主要的目的还是给人看的,如果能尽量的帮助别人更容易的看懂代码,那何乐而不为呢。)

第1个:因为if的条件判断是布尔类型的,虽然这里的代码比较简单一眼就能看懂,代码也应该要写得简单明了。但是谁又能保证别人看你代码的时候肚子饿了呢!

这里strLen分明不是布尔类型的变量,只不过正好false = 0罢了,不喜欢这样子用。

第2个:这样写是对的,自认为是比较容易看懂的一个写法,简单清晰,明了。但要是万一把那个 感叹号 给忘了敲了正好这是肚子饿了,只有到出现奇怪的问题的时候才想起这里漏了,有点浪费时间。这种情况最容易出现在“==”的时候。

第3种:把常量放到前面总觉得怪怪的,但是这样确实更安全点,但是现在用习惯了,也看习惯了。

第4种:吃饱了撑的。

第5种:这个不是判断字符串是否为空的。这是判断str这个指针本身是不是为空值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: