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

关于++,=的执行顺序若干有关问题

2013-03-01 
关于++,*,的执行顺序若干问题1) if ((__res *cs - *ct++) ! 0 )请问++是在(__res *cs - *ct)!0后执

关于++,*,=的执行顺序若干问题
  1) if ((__res = *cs - *ct++) != 0 )
     请问++是在  (__res = *cs - *ct)!=0后执行的吗?为什么,不是说在括号里的先执行吗,为何++不执   行?


2)if (*s1++ == '\0')
         return (0);

++ 是在何时执行?

3) while((*s1++ = *s2++)!= '\0');
    
      这个执行的顺序是什么?
       *s1 = *s2
       *s2++;*s1++ 是吗?是否到*s1 = '\0'还需要++?


还有大家能推荐些相关文章或试题吗?我这里太不熟悉了
      


[解决办法]
  1) if ((__res = *cs - *ct++) != 0 )
     请问++是在  (__res = *cs - *ct)!=0后执行的吗?为什么,不是说在括号里的先执行吗,为何++不执   行?


tmp = *ct;
++ct;
__res = *cs - tmp;
if (__res != 0) // do sth



2)if (*s1++ == '\0')
         return (0);

++ 是在何时执行?

tmp = *s1;
++s1;
if (tmp == '\0') return 0;


3) while((*s1++ = *s2++)!= '\0');
    
      这个执行的顺序是什么?
       *s1 = *s2
       *s2++;*s1++ 是吗?是否到*s1 = '\0'还需要++?


//这个是字符串复制,把s2复制到s1
*s1 = *s2;
tmp = *s1;
++s1;
++s2;
while (tmp != '\0') {
  *s1 = *s2;
  tmp = *s1;
  ++s1;
  ++s2;
}


还有大家能推荐些相关文章或试题吗?我这里太不熟悉了


// 运算符的结合顺序、前++和后++的区别

      
[解决办法]
引用:
*和++的问题依编译器,编程环境的不同可能会产生不同的结果,比如**c++这种玩意儿不用括号是很危险的。最好的方法就是*和++之间按照你想要的结果用括号小心括起来,扯那么多废物一样的代码干嘛。工作中谁这么写谁倒霉。
不会有你说的 编程环境的不同可能会产生不同的结果 这几行代码 虽然不好看 但是都是符合标准的做法 
**c++ 就是 **(c++)没什么危险不危险的 
用括号小心括起来 只是好看而已 真面对编程环境的不同可能会产生不同的结果的情况 一点用都没有

[解决办法]
 [置顶] C,C++表达式求值顺序 裘老的解释。 [推荐] [C/C++ C++ 语言]

热点排行