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 作...