亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

C語言強制類型轉換結果異常

#include?<stdio.h>
int?main()
{
????double?num?=?2.5;??????//定義浮點型變量num并賦值為2.5
????(int)num;
????printf("num的整數部分是%d\n",?num);??
????return?0;
}

其結構為什么是-748043384 而不是2?

ps:經過重試 結果為隨機數

正在回答

3 回答

沒有正確把浮點型num的值轉換成整型,導致系統無法識別,使輸出num的值為系統中隨機的值

http://img1.sycdn.imooc.com//5824057600010e1f09680570.jpg

0 回復 有任何疑惑可以回復我~

#include<stdio.h>

int main(void)

{

????double num=2.5;

????printf("num的整數部分是%d\n",(int) num);

????return 0;

}

int num;只是在這一個聲明中將num的整數部分顯示出來了,但是并不改變本身num的值。

0 回復 有任何疑惑可以回復我~
#1

arafatttttt3416744 提問者

但是我的做法為什么會出現num等于隨機8位數的情況,比較疑惑
2016-05-30 回復 有任何疑惑可以回復我~

#include <stdio.h>

int main()

{

? ? double num = 2.5;?

? ? int j=(int)num;

? ? printf("num的整數部分是%d\n", j); ?

? ? return 0;

}

強制轉換是把原值轉換后賦給另一個變量 ?而你最后的輸出語句還是輸出num 還用的是%d可能會不正確 ?我做了以上調整 系統可以按著你的要求輸出了 ? ?我也是初學者 ?一起研究 愚見勿噴

0 回復 有任何疑惑可以回復我~
#1

arafatttttt3416744 提問者

但是我的做法為什么會出現num等于隨機8位數的情況,比較疑惑
2016-05-30 回復 有任何疑惑可以回復我~
#2

夜風3436910 回復 arafatttttt3416744 提問者

你是每次運行結果都不一樣嗎
2016-05-30 回復 有任何疑惑可以回復我~
#3

夜風3436910 回復 arafatttttt3416744 提問者

printf()函數是根據數據所占內存大小來讀取數據的,double是8字節,打印int類型的時候取4字節。這個程序會先用雙精度浮點型表示2.5然后取最后4字節輸出。
2016-05-30 回復 有任何疑惑可以回復我~
#4

夜風3436910 回復 arafatttttt3416744 提問者

強制轉換并不改變原來的值,你要把強制轉換的值賦值給另一個變量才行。
2016-05-30 回復 有任何疑惑可以回復我~
#5

arafatttttt3416744 提問者 回復 夜風3436910

對,每次都不一樣
2016-05-31 回復 有任何疑惑可以回復我~
查看2條回復

舉報

0/150
提交
取消
C語言入門
  • 參與學習       926905    人
  • 解答問題       21533    個

C語言入門視頻教程,帶你進入編程世界的必修課-C語言

進入課程

C語言強制類型轉換結果異常

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號