c語言吧。為什麼輸出會是1,而不是

時間 2022-02-06 20:25:04

1樓:線玉蘭秋汝

printf

的引數並不會自動做型別轉換的。

例子中格式串中有「%f」,編譯器就會當後邊的引數是個浮點數,它不做型別檢查。

而把一個

int當成浮點數,因為兩種型別的儲存結構是完全不同的,後果就難以預料了,有可能程式崩潰,也可能正常執行,但得不到正確的結果。

具體到樓主這個問題,

把整數1當成浮點數處理,那就是符號位0,階碼0,尾數1,是非規範浮點數,不同編譯器處理結果可能不同。

所以,不要寫出這樣的**。

2樓:鍾離懷雨接凰

一直以來,++

--語法浪費了太多人的時間。說句實在話,++--在c語言中其實是一個很細節的語法,除了表達簡練外,真的沒有什麼其它的好處了。

由於中國的c語言教程長期以來被譚浩強主宰,而譚又錯誤的把++--作為一個c語言重點來教,並增加了一些難點,把本來很簡單的語法,搞得複雜無比!

簡單的來說,++i

和i++,在單獨使用時,就是

i=i+1。而a

=++i,相當於

i=i+1;a=

i;而a=

i++,相當於a=

i;i=i+1;

如果實在搞不明白++

--怎麼回事,那也不是什麼天塌下來的事。

因為a=++i完全可以寫成

i++;

a=i。

a=i++完全可以寫成

a=i;

i++。

而且,這也是一種好的程式風格:++

--語句如非特殊需要,請單獨一行使用。

3樓:汗淑英葉畫

這就是i++和++i的區別阿b=

4-(i++)

是先使用了i當前的值3,b

=4-3

=1,而後i才增一變為4

如果是b=4

-(++i)

是先算i增一,變為5,再計算b=

4-4=0

c語言為什麼不輸出

4樓:爻訊科技

if條件判斷應該是:

if (z == 'a')

if (z == 'b')

if (z == 'c')

5樓:真愛永遠在嗨

元宵夜,元春回孃家待了一會兒,要寶玉和眾姐妹獻詩。寶玉和黛玉兩小無猜,情意綿綿。書童茗煙將《西廂記》等書偷進園給寶玉,寶玉和黛玉一同欣賞。

寶玉庶弟賈環嫉妒寶玉,抄寫經書時裝失手弄倒蠟燭燙傷寶玉,王夫人大罵趙姨娘。趙姨娘又深恨鳳姐,便請馬道婆施魔法,讓鳳姐、寶玉中邪。癩和尚、跛道人擦拭通靈玉、救好二人。

c語言程式,為什麼輸出0?不應該是1嗎?

6樓:

不對,小數和整數在計算機中的二進位制表示法不一樣的,系統只是提供了轉換的功能而已,使用printf輸出的時候,是不會自己轉換的,而是強制使用指定格式輸出

比如說這個程式,最後a中儲存的值(double型別)是1.000000,這個值,前16位(二進位制)肯定是0,所以使用%d格式的時候,它不會判斷對應的變數是什麼型別,就直接把它的前16位以整數的形式輸出,所以輸出的結果必然是0

所以使用%d並不能使輸出結果轉換為對應的整數,請改用%.0f輸出(因為你的變數a是double型),就可以輸出1

c語言這段程式為什麼會輸出1,0,4

7樓:匿名使用者

|| 是先算前面部分再算後面的 (括號也屬於後面那一部分了)

在 前面部分是真以後,就不算後面的了

8樓:化而為鳥

因為k=a+1>0||(++a<0)&&(!(b--<=0));

編譯器會解釋成下面這種

k=(a+1>0)||((++a<0)&&(!(b--<=0)));

而不是下面這種

k=((a+1>0)||(++a<0))&&(!(b--<=0));

剛才我有看了一下優先順序的那張表

&&為11 ||為12

所以x||y&&z

就相當於&&在||內部,就成x||(y&&z)這種情況了。

c語言中 int a=1 printf(「%f」,a) 輸出的為什麼是0? 不是1.0呢?

9樓:蹇冠盛惜海

int是整型,2個位元組,float是浮點型佔用4個位元組,所以,如果,用浮點輸出,變數i的前兩個位元組是0,所以,輸出是0,強制轉換可以改變資料的儲存型別。

10樓:匿名使用者

printf 的引數並不會自動做型別轉換的。

例子中格式串中有「%f」,編譯器就會當後邊的引數是個浮點數,它不做型別檢查。

而把一個 int當成浮點數,因為兩種型別的儲存結構是完全不同的,後果就難以預料了,有可能程式崩潰,也可能正常執行,但得不到正確的結果。

具體到樓主這個問題, 把整數1當成浮點數處理,那就是符號位0,階碼0,尾數1,是非規範浮點數,不同編譯器處理結果可能不同。 所以,不要寫出這樣的**。

11樓:明天未來

這個我試了,好象不同的編譯器輸出的結果不一樣,我用的g++(就是windows的c++),結果卻是-1然後後面是亂碼(用的是int a=1 printf(「%f」,a) )。但是編譯的時候有警告,提示說,第一個引數是double,而第二個引數的型別是int。你最好轉換就不會出錯。

我改為:printf("%f",(float)a)

結果是1.000000,這也是學c/c++要注意的問題。不然有時候會得不到正確的結果

12樓:小灬寶丶

那是因為整型和浮點型在記憶體中的儲存方式是不一樣的,整型是分配連續的空間,將整型數轉換為二進位制儲存,而浮點型則是符號,小數部分,指數部分分別儲存,所以列印的時候會輸出0,而不是1.0;顯示型別轉換就是指明要轉換的型別,例如int a=1;int b=1.1;int c=(int)b;float d=(float)a;強制型別轉換就是顯示轉換,他並不能改變引數的本身型別就比如說float c;int a;c=(float)a;是把a強制型別轉換成float後的值賦給了c,a的型別並沒有改變,仍然是int。

c語言下面簡單**輸出的為什麼都是0 而不是1 2 3 4 5 6 7 8 9 請解釋下原理

13樓:匿名使用者

型別不匹配du。%d是取int型數字,通常都是zhi4個位元組

dao。float一般都是8個位元組。所以用%d列印內

的話只會取其前四容個位元組。按照二進位制排列順序,在數字不是特別大得時候,前四個位元組都是0.把%d換成%f列印試試。

14樓:孤獨_北極星

你把float改成int就輸出123456789了。資料型別強制轉換而已!

c語言實型資料運算,3/2輸出為什麼是0.000000而不是1.000000?

15樓:真雅容洋美

3/2要賦值給一個變數才行,兩個整型常量直接相除並且直接擱在那兒,把編譯器給搞懵了。

16樓:漆語朱水

#include

void

main()

int與double/float編碼不bai一樣du,嘗試zhi

在3/2前進行強dao

制類內型轉換

容,(double)或者(float)

#include

void

main()

為什麼大家都考C1駕照而不是C

年智茂賦 選c1本的根本原因就是因為c1本和c2本的最大區別在於可駕車型的不同。雖然c1駕照和c2駕照是比較常見的小汽車駕照型別,但並不代表兩者可 通用 1.c1駕照和c2駕照分別指什麼?c1駕照為小型汽車手動擋駕照,c2駕照為小型汽車自動擋駕照。2.為什麼很多駕校的c2駕照比c1駕照培訓費用要貴很...

為什麼總輸出很大的負數 c語言,為什麼總輸出一個很大的負數 C語言

scanf i 1f i 修改為 scanf i lf i printf j 1f j 修改為 printf j f j 不明白為什麼你要在前面加個1,難道是看書打 書上是l.c語言問題,為什麼會輸出負數 在你的switch語句最後都加一個default 看一下switch d switch u 如...

c語言迴圈結構為什麼輸出結果是,c語言迴圈結構為什麼輸出結果是

輸入 hello 之後有回車的吧,這個是 n 貢獻給other 輸入 12345 之後也有回車的,這個是 n 貢獻給other 輸入 之後,本身貢獻給other有4個 也有回車的,這個是 n 貢獻給other 輸入 之後也有回車的,但是因為首先 共享給other一個之後,while迴圈結束了,n 作...