c语言题 第八题为什么选b,a哪错了?

因为参数是一个指针char *t=s;就是定义┅个指向char的指针并初始化为s相同的地址,也就是指向同一对象 地址之间是可以进行加减法运算的,两个相同类型指针之间的减法返回两指针之间的距离(char对象数)为ptrdiff_t类型,实质是int类型再减去1就是这个距离再减1,这题答案应该是c

}

w=a==b 考虑优先级,算术运算高于逻輯运算算术运算会统一数据类型,int w强制转换为double型而浮点不能用==做逻辑判断。故而d不对

  1. 当执行第3次循环时i=3,在循环开始

    1.  显然条件成立向下进行循环体 (这里为空操作);

    1. 判断i++<4,即此时的i值4是否小于4

    2. 之后i自增(不管是否小于)得到,i=5

    3. 结果条件不成立直接跳出循环

你對这个回答的评价是?

语法上讲,没有什么问题,只不过一般对于浮点数判等,不直接使用==来判等,而是使用fabs(a-b)<1e-6之类形式

表达式i++<4,只有当子表达式i++的值臸少为4时,才会结束循环,而自增运算符后缀,导致的是表达式的值为变量i的原值,且i会自增一
所以结束循环后i值为5

你对这个回答的评价是

因为判断i++<4时,用的是i的值在执行了for循环之后i才+1

你对这个回答的评价是?

双==是判断语句不是赋值语句

你对这个回答的评价是?

}

我要回帖

更多关于 C语言题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信