雙井號c語言
1. c語言中井號怎麼讀
在美式英語中一般稱作pound sign 美以外的其他英語國家一般稱「#」為hash
2. c語言中的「 # 」怎麼讀
是預編譯裡面的#么?
比如
#include<stdio.h>這種?
如果是c語言中出現一般就讀井號
北美以外的其他英語國家一般稱
#
hash
還有一種編程語言叫做C#
發音為
C
Sharp
3. c語言的 _##name意思
## 連接符號由兩個井號組成,其功能是在帶參數的宏定義中將兩個子串(token)聯接起來,從而形成一個新的子串。但它不可以是第一個或者最後一個子串。所謂的子串(token)就是指編譯器能夠識別的最小語法單元。
簡單的說,「##」是一種分隔連接方式,它的作用是先分隔,然後進行強制連接。其中,分隔的作用類似於空格。我們知道在普通的宏定義中,預處理器一般把空格解釋成分段標志,對於每一段和前面比較,相同的就被替換。但是這樣做的結果是,被替換段之間存在一些空格。如果我們不希望出現這些空格,就可以通過添加一些 ##來替代空格。
舉列 – 試比較下述幾個宏定義的區別
#define A1(name, type) type name_##type##_type 或
#define A2(name, type) type name##_##type##_type
A1(a1, int);
A2(a1, int);
解釋:
1) 在第一個宏定義中,」name」和第一個」_」之間,以及第2個」_」和第二個 」type」之間沒有被分隔,所以預處理器會把name_##type##_type解釋成3段:「name_」、「type」、以及「_type」,這中間只有「type」是在宏前面出現過
的,所以它可以被宏替換。
2) 而在第二個宏定義中,「name」和第一個「_」之間也被分隔了,所以預處理器會把name##_##type##_type解釋成4段:「name」、「_」、「type」以及「_type」,這其間,就有兩個可以被宏替換了。
3) A1和A2的定義也可以如下:
#define A1(name, type) type name_ ##type ##_type
<##前面隨意加上一些空格>
#define A2(name, type) type name ##_ ##type ##_type
結果是## 會把前面的空格去掉完成強連接,得到和上面結果相同的宏定義。
或再比如
#define LINK_MULTIPLE(a,b,c,d) a##_##b##_##c##_##d
typedef struct _record_type LINK_MULTIPLE(name,company,position,salary);
// 這里這個語句將展開為:
// typedef struct _record_type name_company_position_salary;
詳細使用方法,可以參考如下博客內容:http://blog.sina.com.cn/s/blog_7d9463b20100xp5t.html
4. 用C語言編程怎樣輸入井號
Shift+3,3是鍵盤上方的數字。
#####
5. C語言如何輸出井號
printf("%c",'#');
printf("%s","#");
printf("%c",'@');
printf("%s","@");
上述輸出列印行數%c是以字元形式列印輸出,%s是以字元形式列印
承接單片機開發項目
6. C語言中的各種符號問題
對於這些基礎問題不了解,編程太困難了。
一個一個給你講過來,正好就是這本書了。
7. 群內編程題目:「C語言里井號 # 表示什麼」
一般用作預處理標記,如
#include <stdio.h>
#define N 10
等
8. 求助C語言 宏定義 (*(byte*)&(##x)+1)
##
連接符與#
符
##
連接符號由兩個井號組成,其功能是在帶參數的宏定義中將兩個子串(token)聯接起來,從而形成一個新的子串。但它不可以是第一個或者最後一個子串。所
謂的子串(token)就是指編譯器能夠識別的最小語法單元。具體的定義在編譯原理里有詳盡的解釋,但不知道也無所謂。同時值得注意的是#符是把傳遞過來
的參數當成字元串進行替代。下面來看看它們是怎樣工作的。這是MSDN上的一個例子。
假設程序中已經定義了這樣一個帶參數的宏:
#define
paster(
n
)
printf(
"token"
#n
"
=
%d",
token##n
)
同時又定義了一個整形變數:
int
token9
=
9;
現在在主程序中以下面的方式調用這個宏:
paster(
9
);
那麼在編譯時,上面的這句話被擴展為:
printf(
"token"
"9"
"
=
%d",
token9
);
注意到在這個例子中,paster(9);中的這個」9」被原封不動的當成了一個字元串,與」token」連接在了一起,從而成為了token9。而#n也被」9」所替代。
可想而知,上面程序運行的結果就是在屏幕上列印出token9=9
9. c語言定義宏 #define call(x,y) x##y表示什麼
c語言中,##表示把兩個宏參數貼合在一起,即,
#define call(x,y) x##y ,執行call(x,y)結果為xy,例如,
int x=2,y=5;
int xy=90;
printf("%d\n",call(x,y));//結果為90
##被稱為連接符,用來將兩個宏參數連接為一個宏參數。
而單個#的功能是將其後面的宏參數進行字元串化操作,簡單地說就是在對它所引用的宏變數通過替換後在其左右各加上一個雙引號,使其成為字元串。
10. c語言宏定義的連接符有哪些
(一)宏定義中的## 連接符與# 符
## 連接符號由兩個井號組成,其功能是在帶參數的宏定義中將兩個子串(token)聯接起來,從而形成一個新的子串。但它不可以是第一個或者最後一個子串。所謂的子串(token)就是指編譯器能夠識別的最小語法單元。具體的定義在編譯原理里有詳盡的解釋,但不知道也無所謂。同時值得注意的是#符是把傳遞過來的參數當成字元串進行替代。下面來看看它們是怎樣工作的。這是MSDN上的一個例子。
假設程序中已經定義了這樣一個帶參數的宏:
#define paster( n ) printf( "token" #n " = %d", token##n )
同時又定義了一個整形變數:
int token9 = 9;
現在在主程序中以下面的方式調用這個宏:
paster( 9 );
那麼在編譯時,上面的這句話被擴展為:
printf( "token" "9" " = %d", token9 );
注意到在這個例子中,paster(9);中的這個」9」被原封不動的當成了一個字元串,與」token」連接在了一起,從而成為了token9。而#n也被」9」所替代。
可想而知,上面程序運行的結果就是在屏幕上列印出token9=9
(二)"\"與一個較長佔多行的宏
宏定義中允許包含兩行以上命令的情形,此時必須在最右邊加上"\"且該行"\"後不能再有任何字元,連注釋部分都不能有,下面的每行最後的一定要是"\","\"後面加一個空格都會報錯,更不能跟注釋。
#define exchange(a,b) {\
int t;\
t=a;\
a=b;\
b=t;\
}