3.下列 C/C++程式片段執行後,z 的值為何?
(A) 16
(B)24
(C) 32
(D) 40
答案:登入後查看
統計: A(20), B(54), C(141), D(36), E(0) #2978895
統計: A(20), B(54), C(141), D(36), E(0) #2978895
詳解 (共 4 筆)
#5581023
補充一下
假如說char s 沒有宣告[20] (沒有初始化大小) -> char s[]
那麼sizeof(s) 就會是13
因為若以字串的方式輸入陣列的話
編譯器會自動在尾巴加入空字元 '\0'
所以會等同於這樣 :
char s[] = {'C', 'h', 'i', 'n', 'a', 'S', 't', 'e', 'e', 'l', 'C', 'o', '\0'}
然而 C庫函數 strlen(const char *str) 是計算字符串str的長度,但不包括終止空字符。
所以i = strlen(s) 為12,j = sizeof(s) 為13

12
0
#6128315
解釋各個變數的值
-
s:
- 這是一個長度為 20 的字元陣列,其中包含字串 "ChinaSteelCo"。
- 字串 "ChinaSteelCo" 包含 12 個字元,加上結尾的空字元(\0),總共佔 13 個字元。
-
i = strlen(s):
- 函式 strlen(s) 返回字串 s 的長度,不包括結尾的空字元(\0)。
- 因此,i 的值是 12。
-
j = sizeof(s):
- 運算子 sizeof(s) 返回陣列 s 的總大小,單位是位元組。
- 因為 s 是一個長度為 20 的字元陣列,所以 j 的值是 20。
-
z = i + j:
- z 的值是 i 和 j 的和。
將上面的數值代入公式:
ㅤㅤ
z = i + j;
z = 12 + 20;
z = 32;
結論
執行完程式片段後,z 的值為 32。
0
0
#5989582
z 的值是 32,這可能是由於在計算過程中加上了字符串的終止符 '\0'。在實際的C/C++環境中,sizeof(s) 將僅僅返回數組的大小(20),而 strlen(s) 將返回字符串的長度(不包括終止符)。因此,如果這段代碼是在標準C/C++環境中運行,z 的值應該是 31。這裡的不一致可能是因為在Python模擬中沒有考慮到C/C++中的終止符。
0
0