導航:首頁 > 源碼編譯 > 編譯預處理命令只能位於

編譯預處理命令只能位於

發布時間:2022-06-04 07:50:28

① c語言問題

1.錯 可以在任何非程序體中,就是說不能在函數體中
2.對
3. 這個我覺得不好說 #include<stdio.h>這個頭文件平常之所以頻繁使用,是應為它包括了scanf prinrf 等函數 如果這些函數你都能自己定義 就可以不要
4.錯 是預處理吧!#define pi 3.14 #ifndef #define __uu 等就是宏定義與條件編譯
5.對

② 編譯預處理命令的位置可以在()

因為編譯預處理命令上編譯時執行,執行一些替換等操作,在函數執行時已經替換好的值,

③ 以下說法正確的是:

修改:
答案選A
對預處理命令的處理是在編譯前進行的

可以參考:http://..com/question/27050117.html?si=3

④ C語言多選題

1.D
2.C 此題應該是錯誤的是

⑤ 關於C語言的判斷題:以下的說法正確么

沒仔細檢查,可能有錯誤,最好也聽聽別人的意見。重復的我也重復回答了。
1.F
2.F
3.T
4.T
5.F
6.T
7.F
8.F
9.F
10.F
11.T
12.F
13.T
14.F
15.T
16.F
17.F
18.F
19.T
20.F
21.T
22.F
23.T
24.F
25.T
26.F
27.T
28.F
29.F
30.F
31.F
32.T
33.T

⑥ 預處理指令只能位於C源程序文件的首部嗎 為什麼

不一定的,一般來說是要放在文件的首部的,1、防止編譯時出現,還沒有引入就使用的情況(如一些庫函數等的);2、代碼看起來美觀,大方,便於閱讀和修改

⑦ 預編譯命令行由什麼符號開頭

#include "stdio.h"
#define P 3
void *F(int x)/*定義一個無類型函數,它有返回值,只是返回的值是指向無類型數據的指針*/

void main(){printf("%d\n",(int)F(1+3));/*將無類型函數F返回的指針值通過(int)強制轉換為int型*/

還有幾個問題,
1.預處理命令行必須位於源文件的開頭是對是錯?為什麼?
對!
編譯器在編譯源代碼時都是從開頭到結尾依次讀取,自己定義的變數、宏等等都得放前面,這樣在編譯器在讀到它們時就作一個記錄;
在使用這些變數、宏時,編譯器會在記錄中去尋找,如果找不到就會報錯——此變數未被定義。

函數可以放在結尾(main()之後),但是必須在開頭作一個函數聲明(也叫函數原型)以使編譯器為它作記錄,以便以後使用它時可以在記錄中找到它。
函數也可以放在前面(main()之前),此時就不用再聲明了,編譯器在讀到它時也會作一個記錄。

總之,自己定義的東西都得先聲明後使用,否則使用時在記錄中會找不到它。

預處理命令也是自己定義的東西,同屬這一范疇。

2.為什麼在源文件的一行上不能有多條預處理命令?
每條C語句都有一個「;」作結尾,即使都放一行,編譯器都能分辨得出。
預處理命令並不以「#」作為結尾標記,放一行的話編譯器是無法分辨的,它會把此行作為一個語句處理

通常的語句最好都分行寫,否則程序量大時是不便排錯的。

3.若有下列說明和定義
union dt
date;
變數data所佔內存位元組數與成員c所佔位元組數相同,為什麼?

聯合體的長度是其最長成員(如double c)的長度。
聯合體在內存中的存儲形式:
聯合體所有成員a,b,c都是同一地址,也就是說他們共同佔用這一段內存。
以TC3.0為例,a占這一段內存的頭2個位元組,b占這一段內存的頭一個位元組,c占這一段內存的全部位元組(也就是頭4個位元組)

4.為什麼以下不對
char *sp;*sp="right!";
char s[10];s="right!";
一、進行字元串賦值時可以在定義時:直接在字元串定義後接「="right"」
如:char *sp="right";
或者 char s[10]="right";

二、也可以在非定義時,這時左值必須是左值必須是字元串指針變數。
如:sp="right!";
以下都是錯誤用法:
*sp="right!";//左值不是字元串指針變數
s="right!";//左值只是字元串指針 常量

1、如果說*a包含(x和\0),而*b包含(x和y),拿*a-*b會得出什麼結果,*a和*b都是char型變數的話

最終的表達式*a-*b中,a points to '\0',b points to 'y',so 表達式*a-*b代表的是'\0'-'y',結果是-121(y的ASCII是121)

point(char*p)
main()
{
char b[4]={'a','b','c','d'),*p=b;
point(p); printf("%c\n",*p);
}
A.a B.b C.c D.d
選哪個?為什麼?

選D,p最初是首地址b,然後p是b+3,此時*p相當*(b+3)、b[3].

2號問題:
main()
,,,},i,j;
for(i=0;i<4;i++)
{for (j=0;j<i,j++)
printf("%4c",' ');/*原題就是'和'之間只有個空格,我也不清楚是怎麼回事*/
for(j=__;j<4;j++)
printf(%4d",num[i][j]);
printf("\n");
}
}
printf("%4c",' '); 其中的' '其實是一個空格字元常量,這個同'a','b','c'等字元常量是一樣的。
這個語句中%4c是指要讀取一個字元(這個字元就是後面的空格字元常量' ')並輸出,這個字元在顯示器上應該佔4格。所以此句的功能是輸出4個空格(空格也是屬於字元)。
你改成printf("%4c",'a');printf("%4c",'b');試下,它是輸出3個空格和一個字元。
printf("%8c",' ');是輸出8個空格,這個比printf(" ");來實現輸出8個字元來得方便。

若要按下列形式輸出數組右上半三角(什麼玩意?)。
1 2 3 4 i=0,j=i,那麼j可以是0,1,2,3
6 7 8 i=1,j=i,那麼j可以是1,2,3
11 12 i=2,j=i,那麼j可以是2,3
16 i=3,j=i,那麼j可以是3
則下劃線處應填入的是?為什麼?(B)
A.i-1 B.i
C.i+1 D.4-i

3號問題:
程序中若有下列說明和定義語句:
char fun(char*);
main()
{
char *s="one",a[5]=,(*fl)()=fun,ch;
......
}
下列選項中對函數的正確調用語句是?為什麼?
A.(*fl)(a);
B.*fl(*s);
C.fun(&a);
D.ch=*fl( s);

選擇A,根據定義char fun(char*),形參必須是一個字元指針,"a","s"才是字元指針(char pointer),而"*s" is char variable,"&a" is invalid.所以排除B、C

只有fun、*fl才是函數入口地址.
B.*fl(*s);相當於*(fl(*s)),錯誤,指針運算符只能針對指針運算,fl(*s)得到的是int,不是指針,下同。故排除B、D.
D.*fl( s);相當於*(fl( s));

4號問題
#define S(x) 4*x*x+1
main()
{
int i=6,j=8;
printf("%d",S(i+j));
getchar();
}
這個函數的輸出結果是多少?怎麼得的?

得到81.
因為S(i+j)經過預編譯用i+j替換x後,它被展開為4*i+j*i+j+1。即(4*6+8*6+8+1)
你應該這樣改:
#define S(x) 4*(x)*(x)+1
或者 printf("%d",S((i+j)));即將i+j用括弧括起來(i+j),這樣就在替換時用(i+j)替換x

⑧ (49)以下敘述中正確的是 A)預處理命令行必須位於C源程序的起始位置 B)在C語言中,預處理命令行都以"#"開

首先預處理指令不一定出現在主函數之前,也可以出現在函數之中
預處理指令都是以#開頭的
預處理指令包括有宏定義,文件包含和條件編譯
預處理指令是在源程序之前處理的
初學C語言回答的不好的地方還望大家指正

⑨ 關於編譯預處理命令,敘述正確的是( )

A

閱讀全文

與編譯預處理命令只能位於相關的資料

熱點內容
su插件壓縮包怎麼安裝 瀏覽:546
我的世界神奇寶貝伺服器如何快速發育 瀏覽:662
信源編解碼作用 瀏覽:738
編譯腳本失敗 瀏覽:211
編譯無效對象是什麼意思 瀏覽:86
35歲開始做程序員 瀏覽:669
如何查看遠程伺服器系統時間 瀏覽:418
星三角怎麼編程 瀏覽:205
摩斯密碼加密題目 瀏覽:969
觸摸屏自鎖電路編程演示過程 瀏覽:332
程序員的奇妙之旅在線觀看 瀏覽:77
國內伺服器如何連接國外伺服器 瀏覽:453
加密文件怎麼變成不加密了 瀏覽:853
企業密信伺服器地址是什麼 瀏覽:407
note2android升級 瀏覽:839
麻省理工python 瀏覽:29
編譯程序軟體哪個好 瀏覽:847
rar命令行壓縮 瀏覽:938
單片機字元表代碼 瀏覽:504
pdf轉換word蘋果電腦 瀏覽:666