第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

請(qǐng)問沒有給d賦值,為什么會(huì)輸出3呢?

#include?<stdio.h>
int?main()
{
????char?c?=?'a';
????int?n?=?c;??????//將c賦值給n
????float?f?=?c;????//將c賦值給f
????double?d?=??????//******注意看這里******
????printf("%d\n",n);
????printf("%f\n",f);
????printf("%lf\n",d);
????return?0;????
}

請(qǐng)問沒有為什么給d賦值,輸出結(jié)果卻為3呢?

97
97.000000
3.000000

正在回答

2 回答

你代碼第6行 double d = 后面并沒有分號(hào),不算作語句結(jié)束,編譯器會(huì)繼續(xù)將后面的語句連起來(換行不代表語句結(jié)束),所以代碼會(huì)變成這樣:

double?d?=?printf("%d\n",?n);

就是將printf函數(shù)的返回值作為d的初值。而printf函數(shù)的原型是這樣的:

int?printf(const?char?*format,?...);

printf函數(shù)如果執(zhí)行成功會(huì)返回輸出的字節(jié)數(shù),不成功會(huì)返回一個(gè)負(fù)值。剛好這個(gè)printf語句會(huì)輸出"97\n",注意97后面還有個(gè)換行符,所以返回值是3,類型是int。這個(gè)3就會(huì)用于初始化d,這過程中會(huì)發(fā)生類型轉(zhuǎn)換,int型會(huì)轉(zhuǎn)換成double,值不變,所以d的值就是3。

還有,你在用printf輸出double和float型時(shí),都應(yīng)該使用%f,%lf并不規(guī)范。

1 回復(fù) 有任何疑惑可以回復(fù)我~
#1

j0nny

練習(xí)本身就用的%lf。。
2015-06-14 回復(fù) 有任何疑惑可以回復(fù)我~
#2

onemoo 回復(fù) j0nny

但是用 %lf 并不規(guī)范。 這就是槽點(diǎn)所在:本站的C語言課程十分業(yè)余...
2015-06-14 回復(fù) 有任何疑惑可以回復(fù)我~

printf("%d\n",n);該函數(shù)有返回值,返回了輸出的字符數(shù)'9','7',\n'共三個(gè)字符,所以返回3賦值給d

1 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消

請(qǐng)問沒有給d賦值,為什么會(huì)輸出3呢?

我要回答 關(guān)注問題
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)