| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 438 人关注过本帖
标题:以前以为冒泡排序不能用宏定义,结果还是能行...
只看楼主 加入收藏
traveller、z
Rank: 2
等 级:论坛游民
帖 子:49
专家分:34
注 册:2014-12-2
结帖率:75%
收藏
 问题点数:0 回复次数:5 
以前以为冒泡排序不能用宏定义,结果还是能行...
图片附件: 游客没有浏览图片的权限,请 登录注册

只是不能在a[]括号内定义动态变量
搜索更多相关主题的帖子: 动态 
2015-11-14 12:52
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
越學越回頭,還是沒長進那種。

授人以渔,不授人以鱼。
2015-11-14 13:05
traveller、z
Rank: 2
等 级:论坛游民
帖 子:49
专家分:34
注 册:2014-12-2
收藏
得分:0 
回复 2楼 TonyDeng
尴尬!

学习!!!
2015-11-14 13:13
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
所謂宏,其實就是文本替換,你這樣寫,跟直接寫int a[10]沒有絲毫區別。別以爲宏是什麽語言上的東西。再説了,你這個問題跟冒泡排序半點關係都沒有,標題誤導人。

[此贴子已经被作者于2015-11-14 13:20编辑过]


授人以渔,不授人以鱼。
2015-11-14 13:19
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
事實上,對絕大多數編譯器來説,
#define N 10

const int N = 10;
是差不多的。

兩者都會在編譯時被實際替換爲字面值10。它們之間的差別,一是前者是在預處理階段執行,沒有語法檢查,也沒有類型檢查,後者在編譯階段執行,但有檢查。所以即使在古老的C++語言中,早就可以在後者那樣的情況定義數組int a[N],而C語言不行(在C99之後可以)。

兩者都是被實際替換爲常量值的事實,後者對一些喜歡玩“技術”的程序員來説,是一個深不見底的陷阱,當他們玩技巧把const數據强制取消const之後更改其值時,就極可能在這裏出錯(改了某處的數據但此常量並非僅在此處使用,即各處當時同名聲明的常量出現不一致),而這是在編碼上無法檢查出來的。編程規範警告“不要胡亂取消const”以及“鼓勵多用const”,很多自以爲是的“高手”不以爲然,信不信邪,當然是各人自便了。

授人以渔,不授人以鱼。
2015-11-14 13:41
traveller、z
Rank: 2
等 级:论坛游民
帖 子:49
专家分:34
注 册:2014-12-2
收藏
得分:0 
回复 5楼 TonyDeng
谢谢!

学习!!!
2015-11-14 13:58
快速回复:以前以为冒泡排序不能用宏定义,结果还是能行...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018528 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved