關於C語言的幾道基礎題

來源:互聯網
上載者:User

1.如果int a = 1, b = 2, c = 3, d = 4;則條件運算式 "a < b ? a : c < d ? c : d" 的值為__?

解析:條件操作符?:的結合性為從右至左,那麼運算式的結合性用括弧表示:(a < b ? a : (c < d ? c : d))
答案:1

2.已知 i = 10; 運算式 "20 - 0 <= i <= 9" 的值為__?

解析:在雙目運算子中,算術運算子的層級最高,關係運算子次之,邏輯運算子最低。運算式的結合性用括弧表示(20 - 0) <= i <= 9
答案:1

3.已知 int x = 1; u;執行語句 "y = ++x > 5 && ++x < 10;" 後變數 x 的值為__?

解析:運算式中單目運算子++最高, 關係運算子層級高於邏輯運算子,賦值運算子=的層級最低。運算式的結合性用括弧表示y = ((++x) > 5) && ((++x) < 10), 對於邏輯運算子&&,前面部分為假時則不會計算後面部分,所以((++x) > 5) 的結果為假後,後面的((++x) < 10)不再進行計算,所以 x 的結果為2,y 的結果為0。
答案:2

4.已知 int i = 1; 執行語句"while(i++ < 4);"後變數 i 的值為__?

解析:n++表示先使用變數n的值,然後將n的值增1;++n表示將n的值增1,然後再使用變數n的值。再例如:*ptr++ 與 *(ptr++) 結果是一致的,都表示"先*ptr,然後ptr++"。
答案:5

5.宏定義:
#define PR(fmt, val) printf(#val " = %" #fmt "/t", (val))
#define NL putchar('/n')
#define PRINT1(f, x1) PR(f, x1), NL
那麼,PRINT1(d, 5);擴充後的結果?

//這個調用先擴充為 RP(d, 5) NL
//然後再擴充 printf(#5 " = %" #d "/t", (5)), putchar('/n')
//最後擴充 printf("5 = %d/t", (5)), putchar('/n'))
摘自《C語言解惑》

 

6.編程風格關於選擇正確的條件

(1)
do
{
 if(!A) continue;
 else B;
 C;
}while(A);

//第一次改造,先消除“多餘的” continue 語句
do{
 if(A) { B; C; }
}while(A);

//第二次改造,再把 "do ... while" 和 if 語句替換為 while 語句
while(A)
{
 B;C;
}

 

(2)

while(c = getchar() != '/n')
{
 if(c == ' ')continue;
 if(c == '/t')continue;
 if(c < '0')return (OTHER);
 if(c <= '9')return (DIGIT);
 if(c < 'a')return (OTHER);
 if(c <= 'z')return (ALPHA);

 return (OTHER);
}
return (EOL);

 

改造後:

while(c = getchar() != '/n')
{
 if(c >= 'a' && c <= 'z')return ALPHA;
 else if(c >= '0' && c <= '9') return DIGIT;
 else if(c != ' ' && c <= '/t') return OTHER;
}
return (EOL);

摘自《C語言解惑》

 

7.關於指標的一個小題
int p;
*p++ = *(p++)
*++p = *(++p)
++*p = ++(*p)

 

8.
int a[3][3] = {{1, 2, 3},{4, 5, 6},{7, 8, 9}};

a和a[0]求值為同一個地址,但是它們是有區別的,它們的類型不同,這會導致在對地址進行算術運算時體現出同,a+1和a[0]+1意義不同,前者指向下一個三元的int數組,後者指向下一個int整數指標。

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.