两个难题,高分请大家回答

ahao 2010-01-31 02:27:51
1.
char szData[256];
int i=0;
for(i=0;i <256;++i)
{
szData[i]=0;
}

会不会崩溃?++i改成i++以后会不会崩溃?

2.
while ((p)&&(*p))
{
//...
}

当p为NULL时,会不会崩溃?
...全文
309 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
wb112200 2010-01-31
  • 打赏
  • 举报
回复
最好的办法就是写出来试试,我试过了,不会有问题的...
梦之安魂曲 2010-01-31
  • 打赏
  • 举报
回复
众说纷纭,不明真相。关注后续发展。
haze_1111 2010-01-31
  • 打赏
  • 举报
回复
1.i++和++i都不会崩溃
2.不会崩溃,因为当p等于NULL时,(p)已经为false,&&后面的表达式不会被计算
wyxsdzz 2010-01-31
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 z569362161 的回复:]
我去看了。

还给他留言了。---------------------------------------------------

fetag

说这么多累不累啊?

还有LZ你是吃什么长大的?

这么肥啊!

如果把你消灭了。

非洲就会有10个儿童能吃饱饭了。
[/Quote]

你为他又多提供了一段“摘录”
z569362161 2010-01-31
  • 打赏
  • 举报
回复
fetag 

说这么多累不累啊?

还有LZ你是吃什么长大的?

这么肥啊!

如果把你消灭了。

非洲就会有10个儿童能吃饱饭了。


这是我在http://topic.csdn.net/u/20100130/16/5e40de52-6a51-4648-9d45-836792b55219.html

的留言。。不是说你们呕。
z569362161 2010-01-31
  • 打赏
  • 举报
回复
我去看了。

还给他留言了。---------------------------------------------------

fetag

说这么多累不累啊?

还有LZ你是吃什么长大的?

这么肥啊!

如果把你消灭了。

非洲就会有10个儿童能吃饱饭了。
macrojj 2010-01-31
  • 打赏
  • 举报
回复
不要搭理他嘛
cocat 2010-01-31
  • 打赏
  • 举报
回复
已经说的很清楚咯~我也觉得那些假装很牛B的人神神的,来这里发什么书啊什么的~我又不看~
z569362161 2010-01-31
  • 打赏
  • 举报
回复
都不会的。

什么短路法则?

那么多法则没功夫记。

关键是原理。
cattycat 2010-01-31
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ahao 的回复:]
呵呵,谢谢楼上的,发这个帖子是因为
http://topic.csdn.net/u/20100130/16/5e40de52-6a51-4648-9d45-836792b55219.html
这个帖子

作为有这么牛B的书名的书的作者,我不太明白,他为什么听不进我的话,还出口伤人,
我不服,发个贴大家评评理。
[/Quote]
有些人喜欢装13,他们的话不必当真,你自己知道是什么就行了。
cattycat 2010-01-31
  • 打赏
  • 举报
回复
两个都不会崩溃。
1 数组大小本身就是256,没有越界访问
2 p是NULL时,比较条件直接是false就不会再去取*p的值了。
十八道胡同 2010-01-31
  • 打赏
  • 举报
回复
1.
char szData[256];
int i=0;
for(i=0;i <256;++i)
{
szData[i]=0;
}

会不会崩溃?++i改成i++以后会不会崩溃?
-------------------
你会,++i,i++在这里并没有区别,区别只是在需要立即知道他的值时,比如a=i++,b=++i;这样是有区别的

2.
while ((p)&&(*p))
{
//...
}

当p为NULL时,会不会崩溃?

------------
不会,P为NULL时,(p)就是false &&将不在执行
Paradin 2010-01-31
  • 打赏
  • 举报
回复
都没有问题。i++和++i在循环里是一样的
第二个如楼上
  • 打赏
  • 举报
回复
[Quote=引用楼主 ahao 的回复:]
1.
char szData[256];
int i=0;
for(i=0;i <256;++i)
{
  szData[i]=0;
}

会不会崩溃?++i改成i++以后会不会崩溃?

2.
while ((p)&&(*p))
{
//...
}

当p为NULL时,会不会崩溃?

[/Quote]

1.for的范围没有导致内存越界,为何会崩溃。
单条i++;跟++i;的效果是一样的。
2.既然你前面有(p)判断,是不会崩溃,短路原则。
wwq100 2010-01-31
  • 打赏
  • 举报
回复
wuhuwy 2010-01-31
  • 打赏
  • 举报
回复
帮顶,学习了
cismylife 2010-01-31
  • 打赏
  • 举报
回复
了解了以下失望门事件
失落的凡凡 2010-01-31
  • 打赏
  • 举报
回复
哦 原来如此
子曰:见贤思齐焉,见不贤则自省也.
milo和肖先生让我分别想起了这句话的前后两部分。
mstlq 2010-01-31
  • 打赏
  • 举报
回复

6.5.13 Logical AND operator
Syntax
1 logical-AND-expression:
inclusive-OR-expression
logical-AND-expression && inclusive-OR-expression
Constraints
2 Each of the operands shall have scalar type.
Semantics
3 The && operator shall yield 1 if both of its operands compare unequal to 0; otherwise, it
yields 0. The result has type int.
4 Unlikethe bitwise binary & operator,the && operator guarantees left-to-right evaluation;
if the second operand is evaluated, there is a sequence point between the evaluations of
the first and second operands. If the first operand compares equal to 0, the second
operand is not evaluated.


直接搜索标准就是了……
pengzhixi 2010-01-31
  • 打赏
  • 举报
回复
就第2个题目来说:我之前不敢确定C里面的&&是否也是短路求值法则,所以特意翻了下书《C语言核心技术》第75页,可以确定while ((p)&&(*p)) 是不会有任何问题的。
加载更多回复(11)

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧