c語言問題,c語言問題

時間 2022-05-01 12:35:10

1樓:匿名使用者

++i表示先讓i增加1,然後使用i的值

i++表示先使用i的值,然後讓i增加1

--同理

因此int a=0,b=3;

a=++b;那麼b=b+1=4,a=b=4(「那麼」後面的「=」表示等於)

其實就等價於

int a=0,b=3;

a=b++;那麼a=b=3,b=b+1=4(同上)

等價於在迴圈中

for(int i=0;i<10;++i)和for(int i=0;i<10;i++)這2個效果是一樣的,單獨的++i;和i++;語句效果是一樣的,只是++i效率高一些

while(++i)和while(i++)不一樣

因為前者先讓i增加1,然後判斷i是否為0

後者先判斷i是否為0,然後讓i增加1(不管i是否等於0)

假如是個指標

int a[10]=;

int *p=a;//或者int *p=&a[0];效果都一樣

int b=0;

b=*p++;//等價於也就是b=*p=a[0]=1,然後p=p+1也就是p變成a[1]的地址

假如是b=*(++p);那麼等價於也就是先讓p變成a[1]的地址,然後b=*p=a[1]=2;

2樓:

i++ 字尾自加運算, 先取出i的值參與運算,i值再加1++i 字首自加運算, i值先加1,再取出i的值參與運算--i 字首自減運算, i值先減1,再取出i的值參與運算i-- 字尾自減運算, 先取出i的值參與運算,i值再減1int i = 1;

int j;

j = i++;

相當於j = i;

i = i + 1;

j 是 1,i 是 2

//----------------------------int i = 1;

int j;

j = ++i;

相當於i = i + 1;

j = i;

j 是 2,i 是 2

//----------------------------int i = 2;

int j;

j = --i;

相當於i = i - 1;

j = i;

j 是 1,i 是 1

//----------------------------int i = 2;

int j;

j = i--;

相當於j = i;

i = i - 1;

j 是 2,i 是 1

3樓:匿名使用者

++i 和 --i 的運算次序相同,在使用i之前,先使i的值 加1 或 減1(先加減後運算)

i++ 和 i-- 的運算次序相同,在使用完i以後,在使i的值 加1 或 減1(先運算後加減)

例如:注意幾點:

1)自增\自減運算子只能用於變數,而不用於常量或表示式 如:8++、--(a+b)不正確的

2)++和--的優先順序別高於算術運算子,結合方向是「自右向左」

如:-i++ 相當於 -(i++)

4樓:匿名使用者

我給你一個簡單的例子:

比如說a = 10;

我要將a賦值給b

1 b = a++; 這種情況結果就是b=10 a=11 +在後面表示先賦值後自增

2 b = ++a; 這種情況結果就是b=11 a=11 +在前面表示先自增後賦值

2 b = a--; 這種情況結果就是b=10 a=9 -在後面表示先賦值後自減

2 b = --a; 這種情況結果就是b=9 a=9 -在前面表示先自減後賦值

如果還有什麼不懂的再交流~~~

5樓:匿名使用者

i++;

就時先把i的值賦給變數然後再加1;

如int a,i=0;

a=i++;//此時a=0;即i=0,i賦值完成後自加1,即=1;

printf("%d",a);

a=i;//此時a=1;即i=1

printf("%d",a);

++1;

就是先自加1然後賦值

如int a,i=0;

a=++i;//此時a=1;即i=1

printf("%d",a);

i--.--i;

意思和上面的一樣

6樓:名難取題好問

通俗易懂點好了

#include

void main()

7樓:匿名使用者

i++就是先運算 然後再加1(下次加1這樣理解也行),而++i表示先+1然後在運算

c語言基本問題

8樓:岔路程式緣

一、c語言規定總是從main()開始執行的(這個函式也叫「主函式」)。因此,你發來的題目中的(1、6、8)敘述都是錯誤的,都應該選擇f。

二、第2題中,c語言對其資料在記憶體中所佔用的實際位元組數,隨著程式中宣告的資料型別以及資料的多少而變化,c語言本身並沒有明確規定。這題應該選f。

三、第3題,c語言中強制型別轉換,僅對轉換的語句有效,而不會改變所轉換變數的原有資料型別,這是正確的,應該選t。

四、第4題,i=8,j=10;printf("%d,%d,%d,%d\n",i,j,++i,j++);實際上是一個程式執行類題目,執行這一句時,先取得ij變數的值,其中有一個++i(先自增),一個j++(後自增),先自增的i先加上1,也就是i=8+1=9,而後自增的j在列印之後再加1,所以列印時仍是j=10。所以列印出來是:9 10 9 10。

這是正確的。

五、第5題「c語言中放在「」之間的內容都被視為字串的一個構成部分,都可以在螢幕上原樣顯示」的說法是錯誤的。舉一個例子就可以了:print("%d",8);是列印不出來%d的,它只能列印出來8。

所以它是錯的。

六、第7題,設x、t均為int型變數,則執行語句"x = 10;t = x && x >10;"後,t的值為,這個題目好似沒有寫完,成了填空題了,現在來看計算過程,t = x && x >10,根據計算的優先順序,>號是6級,&&是11級,先計算x >10,因為x=10,故x>10是不成立的,所以它的值是0,第二步再計算x && 0=10 && 0=0。t的值最後應該是0。

希望對你有所幫助。

9樓:匿名使用者

第一題:f,是從主函式的第一條語句開始執行的。

第二題:t,每一種資料型別在c語言中都佔用固定的位元組數。

第三題:f,強制型別轉換會改變資料型別。

第四題:f,輸出結果為8,10,9,10。

第五題:f,不能被原樣顯示的有預處理命令中被包含檔名(如"stdio.h")、printf函式的轉義字元(如"\n")。

第六題:f,程式執行是從主函式第一條語句開始,執行到主函式最後一條語句結束。

第七題:t的值為0,因為x>10的值為0。

第八題:f,c程式執行從主函式開始。

10樓:匿名使用者

f( t  )c語言程式是從原始檔的第一條語句開始執行的。

//c語言程式是從主函式中的第一條語句開始執行的

2.   f( t )c語言對其資料在記憶體中所佔用的實際位元組數是有明確規定的。

//c語言對其資料在記憶體中所佔用的實際位元組數沒有明確規定,比如:整型資料在turbo c中佔2位元組,在vc中佔4位元組

3.   t(  f)c語言中強制型別轉換不會改變原變數的原有資料型別。

//強制型別轉換不會改變原變數的原有資料型別,得到的結果是轉換後的型別資料

4.   t( f  )程式段:i=8,j=10;printf("%d,%d,%d,%d\n",i,j,++i,j++);其結果9,10,9,10.

//先執行j++,輸出10  再執行++i,輸出9,然後輸出i和j的值,分別是9,10

5.   f( t  )c語言中放在「」之間的內容都被視為字串的一個構成部分,都可以在螢幕上原樣顯示。

//c語言中放在「」之間的內容都被視為字串的一個構成部分,前半句是正確的

//都可以在螢幕上原樣顯示。不一定,比如有些轉義字元,換行符\n,退格\b等等

6.  f( t )c程式的執行是從程式的第一行開始,一直到程式的最後一行結束。

//c程式的執行是從主函式的第一行開始,一直到主函式的最後一行結束

7.   t( f)設x、t均為int型變數,則執行語句"x = 10;t = x && x >10;"後,t的值為。

//執行語句"x = 10;t = x && x >10;"後,t的值為0

8.   f(t   )c程式的執行從程式頭開始。

//c程式的執行是從主函式的第一行開始,主函式可以位於程式中的任何地方,不一定是程式的開頭

11樓:匿名使用者

1經常程式執行是由啟動**開始的,而啟動**一般都是彙編寫的,2.不確定的,資料型別定義的時候是確定的,執行的時候根據硬體多不同會有所不同

3.毫無疑問肯定會了,要不還說什麼強制呢,對吧4.應該是8,10,9,10吧。

因為printf語句就執行了一次,所以第一個i是8,第二個i是先+後輸出應該是9,第一個j是9,第二個j是先輸出後++,而程式只執行了一次,所以還是沒有+,等於10。

5.雙引號是c的字串格試符,所以是對的。

6.同第一題

7·沒有看明白

8.同第一題

12樓:匿名使用者

1、假,從main開始執行。

2、假,int的長度不明確。

3、真。

4、假,從左向右計算,8,10,9,10

5、假,有轉義字元。

6、假,見1

7、t=0

8、假,見1

13樓:匿名使用者

第4題你是正確的 ,不同的編譯器會有不同的結果,這屬於垃圾**

14樓:蹉燦紫婉娜

("a/1000>=1")

你這句寫錯了,應該是

(a/1000>=1)

把引號去掉

15樓:狂雲德潮鶯

1·c語言程式的基本單位是(b函式)a過程b函式c子程式d標誌符2·如果a=5<<2,為什麼a=20?

a=5<<2相當於a=a*2的平方

即a=5*4=20

3·不能正確對字串賦值的是(a

二維陣列不應該這樣賦值)a

char

st[4][5]=;b

char

*s;scanf("%s",s);

cchar

*s;s="abcde";d

char

s[5]=;

4·正確輸入字元組a的是(d)a

gets('a');

bscanf("%c",a);

cscanf("%s",a);d

gets("a");

5·如果c=35,為什麼printf("%d\n",c&c)的值為35?那個c&c是什麼東西。&在這裡是「按位與」運算

c&c化為二進位制的比較,都為1

則為1,否則為0.再化回10進位制數

C語言問題,C語言問題C語言問題

選a首先,空格也是一種字元,b d選項分別把空格賦給了c1,c1 其次,c選項不完整,排除 不僅a這樣,10a20b也是可以的。 聽不清啊 答案a 10a 20b cr 是正確的。因為scanf d c 時,會忽略數字前面的空格,遇到非數字字元就會結束讀取 非數字字元會留待下一次讀取,即被後面的 c...

C語言問題,C語言問題

符合,相當於一個字元,ascii字元可以直接轉成short整型數字。101 不符合,這是一個字串,不能作為常數。不符合,因為 會對雙引號轉義,找不到另一個雙引號。會出錯。而且就算是 也不符合,因為編譯器會把它理解成一個字串,而非單個字元。e3不符合。019不符合,0開頭代表8進位制數,不能出現9。0...

c語言問題,C語言問題?

char c 好好看書去 小 超 字元型變數 1 字元變數的定義 字元變數只能存放一個字元常量。字元變數的定義形式如下 char c1,c2 2 字元資料在記憶體中的儲存形式及其使用方法 字元型資料在記憶體中以相應的ascii 存放。字元在記憶體佔一個位元組,表示數的範圍從0 127。把字元對應的a...