1樓:匿名使用者
錯誤原因:定義巨集的時候 #define print(a); 多了一個分號 一直到下面**的時候巨集自動幫你替換成 ;printf("the end"); 那麼根據for迴圈的規律,不加{}的情況下,它只執行 printf("the end"); 所以不一樣,第2個之所以只輸出一個其實那是在for迴圈結束後才執行的 注:巨集定義是不需要 ; 來結尾的要加也是在後面的**上加,而不是在巨集名後面加..。
2樓:匿名使用者
c語言的字元是用ascii碼錶示的。每一個字元對應一個整數。同樣的,每一個整數也對應一個字元。
a~z對應66~90。a~z對應97~122的數。ch大於a小於z時讓它 a-a,正好可以把它的ascii碼變為a~z區間內的整數。
3樓:匿名使用者
"#define print(a); "它的最後好像是不能加分號吧,你去掉分號試試看
4樓:匿名使用者
#define print(a);把;去掉
c語言的巨集定義問題
關於c語言巨集定義的問題
5樓:莊政警
要使得巨集引數在替換後出現雙引號,不能在定義巨集的時候直接用雙引號,而是在引數前加個"#",這樣定義:
#define zopen(y,d,x) if((y=fopen(#d,#x))==null) printf("error\n")
還有使用時不要忘了結尾的分號
6樓:亢梅風恭仙
c語言的字元是用ascii碼錶示的。每一個字元對應一個整數。同樣的,每一個整數也對應一個字元。a~z對應66~90。a~z對應97~122的數。ch大於a小於z時讓它
a-a,正好可以把它的ascii碼變為a~z區間內的整數。
c語言關於巨集定義的問題
關於c語言巨集定義的問題。。。
7樓:匿名使用者
##表示連線符, struct(type)相當於struct_tag_type。 如果#define時直接寫作為type則能做為引數使用。
你寫出的struct巨集使用之前, 應該定了struct_tag_***xx之類的結構體.
假設你申明瞭一個結構體: struct_tag_point, 定義了一個物件語用應用:
struct_tag_point var;
使用struct巨集後為
struct(point) var;
拆分巨集之後等價於
typedef struct_tag_point point;
point var;
對於你的問題 type 完全可以代替 struct _tag_##type???應該是不可以的。否則如上示例拆分拆分巨集之後等價於:
typedef point point;
point var;
8樓:
在巨集定義中"#"有特殊的用法,
當巨集引數是另一個巨集的時候 需要注意的是凡巨集定義裡有用'#'或'##'的地方巨集引數是不會再
一般用法 我們使用#把巨集引數變為一個字串,用##把兩個巨集引數貼合在一起.
9樓:匿名使用者
巨集定義就是用一個你熟悉的符號替代原來的
c語言中巨集定義的問題
10樓:愛衝吧
p1代提了3.14, 3.14是一個常量,當然p1也是常量了,不是你說的字串
11樓:
巨集定義的是什麼型別,用的就是什麼型別,字串定義要加「」,還有啊,你的**就這幾行就有很多的問題啊你看看你這裡有沒有問題?
12樓:匿名使用者
這理解錯了吧~誰說3.14是字串的
C語言中的巨集定義如何使用,c語言巨集定義如何用?用巨集定義有什麼優點?
正確的完整輸出 3 個整數的程式結構應該按照如下寫法 define n 3 include int main for i 0 i n i 迴圈輸出整數陣列 a 中的 3 個數字,特別要注意 i 必須要寫成 i n,而不能夠寫成 i n,否則的話,就會產生越界錯誤。printf d t a i pri...
c語言寫標頭檔案定義巨集的問題,C語言寫標頭檔案定義巨集的問題
兔子和小強 ifndef a h define a h endif 就是如果沒有定義a h那麼就定義a h,並執行.這樣就避免了重複include的問題。標頭檔案叫file 那麼一般 ifndef file h 這是c的風格,也可以取一個唯一的其他識別符號 預編譯 內的防止重複編譯就是這樣做的,比如...
關於c語言函式型別定義問題,關於C語言函式型別定義問題
超級福醬 這個語句主要是用的c語言的等號算符 c語言裡面等號可以看做一個函式,它的返回值是右值。比如int i,j,x i j 5 這條語句除了賦值以外還有返回值,返回值是5所以可以這麼寫 x i j 5 這裡x就等於5了。所以 語句 if x 0 就可以簡寫為 if i j 5 0 另外,c裡面字...