来看个有意思的问题

loverP 2004-07-23 07:20:03
大家一起来看看下面这段程序:

int main() {
int r, a, b;
int * p = &b;

a = 5;
b = 2;
r = a/*p; /*这里用指向整数b的指针来引用b的值*/

return 0;
}

大家说说看,编译并运行这段程序会有什么结果?
下面这个呢?

int main() {
int r, a, b;
int * p = &b;

a = 5;
b = 2;
r = a/*p /*这里用指向整数b的指针来引用b的值*/ ;

return 0;
}
...全文
103 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
loverP 2004-07-24
  • 打赏
  • 举报
回复
呵呵,看来大家都很强嘛~~~~

是这样的,第一个例子根本通不过编译;而第二个例子尽管能通过编译,却不能得到预期的结果。

正确的做法是:

r = a / *p; /* ... */

或者

r = a / (*p); /* ... */

这就是C中所谓的“词法陷阱”,不要掉进去哦~~~
而且,看来很多大师强调在运算符两边放上空格,这不光是为了格式的美观,也是为了避免这些词法陷阱呀
sunjx119 2004-07-23
  • 打赏
  • 举报
回复
“/*”晕啊,记着加括号
renheihei 2004-07-23
  • 打赏
  • 举报
回复
这样就行了:
r = a/(*p); /*这里用指向整数b的指针来引用b的值*/
ok!!!!!!!!!!!
geesun 2004-07-23
  • 打赏
  • 举报
回复
r = (a/*p) /*这里用指向整数b的指针来引用b的值*/ ;

好像还是不行的吧!应该这样r=a/(*p) 或者 r= a/ *p
elevation2me 2004-07-23
  • 打赏
  • 举报
回复
或者在a/*p的/和*中间加个空格?
elevation2me 2004-07-23
  • 打赏
  • 举报
回复
r = (a/*p) /*这里用指向整数b的指针来引用b的值*/ ;
加对括号应该可以了吧?
zhangfjj 2004-07-23
  • 打赏
  • 举报
回复
有点意思,看来设置如何识别注释还很重要
yunfeitiger 2004-07-23
  • 打赏
  • 举报
回复
没有输出。
geesun 2004-07-23
  • 打赏
  • 举报
回复
上面那个编译通不过,因为 a/*p 后面的就成了注释了

下面那个r=a = 5

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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