c語言問題求解

2022-10-01 07:36:42 字數 1789 閱讀 5409

1樓:匿名使用者

我來告訴你吧。

第一,i 是整型,所以

c1 = c2 = i = -159.123賦值時,對-159.123進行了截斷,i 的值就成了-159.

然後將-159賦給c2 和 c1,你可能不理解這裡。

第二,你定義的c1,c2是無符號字元型別,一個位元組,即8個位。所以將-159賦給c1,c2就有問題了。首先來看-159的二進位制表示,由於計算機表示負數是用補碼錶示,補碼在這就意味著,把159的二進位制按位取反,然後再加1,結果就是:

01100001,最後是把這個值賦給了c1,c2,呵呵,這個值的十進位制值 就是97了。

2樓:匿名使用者

先給樓主看看微軟公司c標準庫的strlen原始碼size_t __cdecl strlen (const char * str)

需要注意的是在c語言中規定char陣列最後要以\0為結束。執行上述**,當 while語句進行判斷髮現為\0結束,那麼就不執行了所以直接 return( eos - str - 1 );得到答案

\在c語言中是保留字,\0表示字元陣列結束符號給陣列初始化可以等於或小於元素個數,需要注意的是char陣列需要保留最後一個元素為\0結束,,如果只給了前面幾個元素初始化後面的自動為\0

樓主的**實際上初始化後

s[0]=1

s[1]=2

s[2]=3

s[3]=4

s[4]=5

s[5]=6

s[6]=7

s[7]=0

s[8]=0

s[9]=0

3樓:

strlen函式遇到\0就結束 返回數值 後面的都不看\0一起代表一個字元既空字元

下標和字串裡字元個數可以不等

但是下標裡數字要大於字串個數

未定義的位置都是空字元(\0)

4樓:匿名使用者

strlen()是一個函式,是在執行的時候執行,它需要的引數是字串指標,當傳入字串資料的時候自動退化成字串指標,該函式將對傳入的引數逐個字元查詢直到找到第一個『\0』,表示字串結束。具體可以參看一下strlen的具體實現。

還要注意區分sizeof和它的區別。

5樓:

strlen是函式,它實現的方法就是遇到結束符也就是"\0"就停止計算,你覺得是9,sizeof是運算子,負責輸出整個陣列的大小,不管裡面是否存了資料,存了什麼 所以sizeof(s) = 10

6樓:

這麼說吧

你定義一個

char s[10]=''123"是可以的s[0]、s[1]、s[2] 的值分別是 『1』 『2』 『3』 後面的沒有賦值的元素系統自動都加上了'/0'

'/0'就是字串結束的標誌

7樓:

字串是以\0結尾,strlen判斷是if(s[i] != '\0')只要遇到\0就算是結束。如果你要求整個字串開闢的空間的話可以這樣char s=''1234567\0\0";sizeof(s)

8樓:匿名使用者

1、\開頭的叫轉義字元,這裡面\0一起表示字串結束。遇到\0後面不在計算。

2、可以不等。

9樓:滄海雄風

\0表示字元陣列結束符號

\0後面的就不計算了

下標可以比輸入內容長度大

但是不能比輸入長度小

10樓:匿名使用者

\0表示字元陣列結束符號

c語言問題。求解答,C語言問題。求解答

上面程式的功能是算出你輸入同學的平均分,同時輸出低於平均分的分數 但是你這個程式版是有問權題的沒有退出的條件,只能輸入score為負數才能退出 分別為56,78,89,65,58,34,45,9 則輸出結果如下圖 c語言問題求解答 5 1 include 2 int main 3 21 22 23 ...

c語言問題,急求解答,C語言問題,急求解答

你好樓主 if a 1 是判斷a是否等於1 而if a 1 則直接將a賦值為1,即永遠非零 為真 不會執行else下內容,不符合程式原意 c語言中 為賦值 為判斷是否相等 a 1 是吧1賦值給a if a 1 等價於 if 1 條件為真了這時候if語句後面的內容必然會執行的 a 1是判斷他們是否相等...

c語言問題,求解答

我估計你用的是譚浩強的c語言吧 是這樣的,譚浩強那本書,為了更符號中國人的習慣,使初學者更易懂,就使得陣列索引值從1 10輸入和輸出陣列中的數,本身陣列索引是從0開始,這樣做就空置第一個元素,注意最大索引值為為10,n 而不是11 n 1 至於你問的為什麼要定義a n 1 而不是a 10 因為你前面...