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 因為你前面...