文章责编:陶玉良
看了本文的网友还看了学历| 高考 中考 考研 自考 成考 外语| 四六级 职称英语 商务英语 公共英语 资格| 公务员 报关员 银行 证券 司法 导游 教师 计算机| 等考 软考
工程|一建 二建 造价师 监理师 咨询师 安全师 结构师 估价师 造价员 会计| 会计证 会计职称 注会 经济师 税务师 医学| 卫生资格 医师 药师 [更多]
使运算符混乱
C++从它的前辈C那里继续了一套含义相当混乱模糊的运算符。再加上语法规则的灵活性,就使它很轻易对程序员造成混乱,使程序员去使用错误的运算符。
这个情况的最出名的例子如下:
if(nVal = 0)
{
// do something if nVal is nonzero.
}
程序员显然想要写if(nVal == 0)。不幸的是,上述语句是完全合法的,虽然没有什么意义,C++语句将nVal赋值为0,然后检查结果看看是否为非零(这是不可能发生的)。结果是大括号内的代码永远不会被执行。
其它几对轻易弄错的运算符是&和&&,以及/和//。
0的四种面孔
根据使用它的方式,常数0有四种可能的含义:
☆ 整数0
☆ 不能是对象地址的地址
☆ 逻辑FALSE
☆ 字符串的终结符
我可以向你证实这些含义的差别是很实际的。例如,下列赋值是合法的:
int *pInt;
pInt = 0;// this is leagal.
而下列赋值是不合法的:
int *pInt;
pInt = 1;// this is not.
第一个赋值是合法的,因为表中的第二定义:常数0可以是地址,然而常数1则不行。
相关推荐:北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |