首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

为啥K&R中非常喜欢在while的判断中赋值

2013-07-29 
为什么K&R中非常喜欢在while的判断中赋值为什么K&R中非常喜欢在while的判断中赋值比如典型的strcat函数,将

为什么K&R中非常喜欢在while的判断中赋值
为什么K&R中非常喜欢在while的判断中赋值
比如典型的strcat函数,将两个字符串连在一起:


[解决办法]
....
char temp;
do
{
 tmp = s[i] =t[j];
++i;
++j;
}while(tmp);

区别不大。
[解决办法]
充分利用了语言特性:表达式的值。代码更"少"。
[解决办法]

    while((s[i++] = t[j++]) != '\0')
        ;


这是传统的C风格,追求代码简练。

它相当于

    s[i] = t[j];
    while(s[i] != '\0')
    {
        i = i + 1;
        j = j + 1;
        s[i] = t[j];
    }
    //再加上下面两句才与原来的代码完全等价,不对于当前功能无用,可以省去
    // i = i + 1
    // j = j + 1


比while((s[i++] = t[j++]) != '\0');的写法啰嗦了很多。
不过,用分号作为“空语句”的方式不太好,应该:




   while((s[i++] = t[j++]) != '\0')
   {
   }


下面的“空语句”也比较常用:


   while((s[i++] = t[j++]) != '\0')
     NULL;
   

热点排行