c语言面试题 类似这样的例子很多,所以我们在

admin3个月前未分类38

  题目:分析以下代码,它的运行结果是?

  备选答案:

  A i=0B i=1C i=-1D 使用不同的编译器编译运行,结果可能不一样

  你选的答案是什么呢?

  下面看一下实际运行结果:

  正确答案是B选项。首先,要注意的一点是这里的if判断条件里用的是=号,而不是==号,这个小陷阱可能会迷惑一些初学C语言的朋友。如果这里用的是==号的话,正确答案自然就是C选项了。

  接下来我们来简单看一下本题答案为什么是B选项。if语句的通用形式为:

  if (expression)

  statement

  可以明确的是:如果对expression为真(非0),则执行statement。本题中,如if (i=0)其实就等价于

  i=0;

  if (i)

  显然这里的if语句的expression为假,不会执行statement。

  类似的if (i=1)等价于

  i=1;

  if (i)

  显然这里的if语句的expression为真,执行statement,所以答案为B选项。

  总结一下,如果if语句里面是赋值语句的话,则先执行赋值语句,再将赋值语句的结果作为判断条件。在实际应用中,这样的写法其实很常用。比如我们常会对一些带返回值的函数做判断,如:

  使用malloc函数申请100个char类型内存单元的空间:

  打开一个文件:

  类似这样的例子很多,所以我们在使用if语句时,应当多注意使用=号还是==号,以免误用符号导致代码产生逻辑错误,毕竟在if判断中使用=号还是==号都不会产生编译错误,如果在这里误用了符号而产生bug,则这个bug可能会很隐蔽。

  我们建议在使用if语句时,若明确要判断两个值是否相等时,可以把常量放在==号的左边,变量放在==号的右边,例如:

  if (6==a)

  此时,如果==号误写为=号的话,则编译器会报错的,虽然这么写可能看起来会有些别扭,但是这样却利于我们查错。

  以上就是本次的分享,如有错误,欢迎指出!

相关文章

七丝的意思_拼音

七丝是什么意思?七丝的拼音和意思解释1[qīsī] 古琴的七根弦。亦借指七弦琴。 七丝的意思解释2七丝的详细意思解释古琴的七根弦。亦借指七弦琴。 《文选·张衡<思玄赋>》“考治乱於律均兮” 李善...

西子捧心的意思_拼音

西子捧心的意思:[xīzǐpěngxīn] 指美女之病态,愈增其妍。 西子捧心百科解释:释义相传春秋时美女西施有心痛病,经常捧心而颦(皱着眉头),但仍然显得很漂亮。后因以“西子捧心”指美女之病态,...

大溜的意思_拼音

大溜是什么意思?大溜的拼音和意思解释1[dàliù] 河心的速度大的水流。随~。 大溜的意思解释2指江河中心速度大的水流。谢雪畴《长江飞渡记》:“他的助手在夜暗中送过来一声低唤:‘大溜过来啦!’”...

么眇的意思_拼音

么眇的意思:[memiǎo] 细小。亦指卑微的人。 么眇百科解释:么眇拼音:memiǎo注音:ㄇㄜㄇㄧㄠˇ解释:细小。亦指卑微的人。出处:唐柳宗元《答问》:“卓诡倜傥之士之遇明世也,用智能,显功烈...

光影魔术手怎么用 首先打开光影魔术手,然后点击左

  首先打开光影魔术手,然后点击左上角的打开添加需要编辑的图片,再根据自己的需要调整图片就可以了。   光影魔术手是针对图像画质进行改善提升及效果处理的软件,其特点是简单、易用,不需要任何专业的图像...

竹烟波月的意思_拼音

竹烟波月的意思:[zhúyānbōyuè] 雾气中的竹林和月照下的波纹。喻月光下优美的景色。 竹烟波月的详细解释:竹烟波月 [zhú yān bō yuè] 雾气中的竹林和月照下的波纹。喻月光下...