免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 9459 | 回复: 66
打印 上一主题 下一主题

[C] 2 == c导致的异常 [复制链接]

论坛徽章:
1
摩羯座
日期:2013-12-19 10:04:07
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-08-04 10:57 |只看该作者 |倒序浏览
代码

  1. int c;
  2. scanf("%d", &c);
  3. if(2 == c)
  4. .................
复制代码
这样一段简单的代码
在某个QQ群里面 让我见识到这样的说法

某          k      
else if里的  条件表达式 c==2
写成 2==c  容易报异常

路人A提问
2014/8/4 10:18:24
为什么会异常?

某          k
2014/8/4 10:19:58
当程序读到else if 这行 要是先碰到 c==2   内存就先开辟空间了

某          k      
2014/8/4 10:20:34
当程序读到else if 这行 要是先碰到 2==c   先有占位符 没有内存空间  这不就异常了
我说的异常 是Linux 内核 的异常


以我对C的理解 这样的说法匪夷所思啊
但是我对Linux了解太少了

所以来这里 请教一下各位前辈
某         k
提到的异常 会出现吗

顺便如果出现 这明显应该是编译器BUG对吗?

论坛徽章:
12
巳蛇
日期:2013-09-16 15:32:242015年辞旧岁徽章
日期:2015-03-03 16:54:152015年亚洲杯之约旦
日期:2015-02-11 14:38:37双鱼座
日期:2015-01-05 11:05:47戌狗
日期:2014-12-08 09:41:18戌狗
日期:2014-08-15 09:29:29双子座
日期:2014-08-05 09:17:17卯兔
日期:2014-06-08 15:32:18巳蛇
日期:2014-01-27 08:47:08白羊座
日期:2013-11-28 21:04:15巨蟹座
日期:2013-11-13 21:58:012015年亚洲杯之科威特
日期:2015-04-17 16:51:51
2 [报告]
发表于 2014-08-04 11:04 |只看该作者
这什么乱七八糟的,别理他就完了。

论坛徽章:
1
摩羯座
日期:2013-12-19 10:04:07
3 [报告]
发表于 2014-08-04 11:14 |只看该作者
回复 2# zhaohongjian000

多谢提醒
同意你的想法

一开始 只是我只是觉得他误导新人 看不下去就反驳几句
后面他又是Linux内核 又是年薪40K的 又是华为编程规范
说得我心里没底 我想 难道真的是我弄错了
所以跑上来 找懂Linux的各位 学习了解一下真实情况

   

论坛徽章:
46
2015小元宵徽章
日期:2015-03-06 15:58:18羊年新春福章
日期:2015-04-14 10:37:422015年亚洲杯之阿曼
日期:2015-04-14 10:41:50NBA常规赛纪念章
日期:2015-05-04 22:32:03NBA季后赛大富翁
日期:2015-05-04 22:34:11菠菜明灯
日期:2015-05-04 22:35:49新奥尔良黄蜂
日期:2015-05-04 22:49:2315-16赛季CBA联赛之广夏
日期:2015-12-11 15:02:342015年亚洲杯之巴勒斯坦
日期:2015-03-04 19:56:562015年亚洲杯之阿联酋
日期:2015-03-04 11:19:04休斯顿火箭
日期:2015-03-02 16:32:11纽约尼克斯
日期:2015-03-02 16:09:04
4 [报告]
发表于 2014-08-04 11:28 |只看该作者
个人理解:
感觉他是在扯淡,linux在分配资源的时候到是有推迟到最后的方式(有的书上好像叫做懒人模式)

但是这里分配的资源,就是在栈上开辟一个局部变量,是进程中的栈资源,这个栈空间是在创建进程的时候就分好的

这里c的空间分配到底是在哪条语句感觉是和编译器相关

不管(c==2)还是(2==c),个人感觉c的空间在scanf("%d", &c);就已经定下来了

他说有内核异常,他亲眼见过?

论坛徽章:
46
2015小元宵徽章
日期:2015-03-06 15:58:18羊年新春福章
日期:2015-04-14 10:37:422015年亚洲杯之阿曼
日期:2015-04-14 10:41:50NBA常规赛纪念章
日期:2015-05-04 22:32:03NBA季后赛大富翁
日期:2015-05-04 22:34:11菠菜明灯
日期:2015-05-04 22:35:49新奥尔良黄蜂
日期:2015-05-04 22:49:2315-16赛季CBA联赛之广夏
日期:2015-12-11 15:02:342015年亚洲杯之巴勒斯坦
日期:2015-03-04 19:56:562015年亚洲杯之阿联酋
日期:2015-03-04 11:19:04休斯顿火箭
日期:2015-03-02 16:32:11纽约尼克斯
日期:2015-03-02 16:09:04
5 [报告]
发表于 2014-08-04 11:28 |只看该作者
个人理解:
感觉他是在扯淡,linux在分配资源的时候到是有推迟到最后的方式(有的书上好像叫做懒人模式)

但是这里分配的资源,就是在栈上开辟一个局部变量,是进程中的栈资源,这个栈空间是在创建进程的时候就分好的

这里c的空间分配到底是在哪条语句感觉是和编译器相关

不管(c==2)还是(2==c),个人感觉c的空间在scanf("%d", &c);就已经定下来了

他说有内核异常,他亲眼见过?

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
6 [报告]
发表于 2014-08-04 11:30 |只看该作者
编译器异常?某种嵌入式的?

论坛徽章:
46
2015小元宵徽章
日期:2015-03-06 15:58:18羊年新春福章
日期:2015-04-14 10:37:422015年亚洲杯之阿曼
日期:2015-04-14 10:41:50NBA常规赛纪念章
日期:2015-05-04 22:32:03NBA季后赛大富翁
日期:2015-05-04 22:34:11菠菜明灯
日期:2015-05-04 22:35:49新奥尔良黄蜂
日期:2015-05-04 22:49:2315-16赛季CBA联赛之广夏
日期:2015-12-11 15:02:342015年亚洲杯之巴勒斯坦
日期:2015-03-04 19:56:562015年亚洲杯之阿联酋
日期:2015-03-04 11:19:04休斯顿火箭
日期:2015-03-02 16:32:11纽约尼克斯
日期:2015-03-02 16:09:04
7 [报告]
发表于 2014-08-04 11:36 |只看该作者
典型的装逼犯
回复 3# lin5161678


   

论坛徽章:
1
摩羯座
日期:2013-12-19 10:04:07
8 [报告]
发表于 2014-08-04 11:46 |只看该作者
回复 7# super皮波

明白了
   

论坛徽章:
46
2015小元宵徽章
日期:2015-03-06 15:58:18羊年新春福章
日期:2015-04-14 10:37:422015年亚洲杯之阿曼
日期:2015-04-14 10:41:50NBA常规赛纪念章
日期:2015-05-04 22:32:03NBA季后赛大富翁
日期:2015-05-04 22:34:11菠菜明灯
日期:2015-05-04 22:35:49新奥尔良黄蜂
日期:2015-05-04 22:49:2315-16赛季CBA联赛之广夏
日期:2015-12-11 15:02:342015年亚洲杯之巴勒斯坦
日期:2015-03-04 19:56:562015年亚洲杯之阿联酋
日期:2015-03-04 11:19:04休斯顿火箭
日期:2015-03-02 16:32:11纽约尼克斯
日期:2015-03-02 16:09:04
9 [报告]
发表于 2014-08-04 11:56 |只看该作者
我说的不一定对,就是个人理解,论坛大神比较多
回复 8# lin5161678


   

论坛徽章:
35
双子座
日期:2014-05-09 17:56:38程序设计版块每日发帖之星
日期:2015-08-30 06:20:00程序设计版块每日发帖之星
日期:2015-12-24 06:20:0015-16赛季CBA联赛之上海
日期:2015-12-27 11:07:07程序设计版块每日发帖之星
日期:2016-01-12 06:20:0015-16赛季CBA联赛之北京
日期:2016-01-15 01:01:2115-16赛季CBA联赛之浙江
日期:2016-01-15 22:38:20程序设计版块每日发帖之星
日期:2016-01-18 06:20:00每日论坛发贴之星
日期:2016-01-18 06:20:0015-16赛季CBA联赛之北控
日期:2016-01-30 21:43:01程序设计版块每日发帖之星
日期:2016-02-08 06:20:0015-16赛季CBA联赛之山西
日期:2016-02-20 10:54:41
10 [报告]
发表于 2014-08-04 13:13 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP