日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(int)a和(int)a的区别

發布時間:2025/4/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (int)a和(int)a的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(int&)a和(int)a的區別

?float a = 1.0f;
cout << (int)a << endl;
cout << (int&)a << endl;?
cout << boolalpha << ( (int)a == (int&)a ) << endl; // (1)輸出什么?

float b = 0.0f;
cout << (int)b << endl;
cout << (int&)b << endl;
cout << boolalpha << ( (int)b == (int&)b ) << endl;// (2)輸出什么?

??????? 輸出結果是:
??????? 1
??????? 1065353216
??????? false
??????? 0
??????? 0
??????? true

??????

?

答:(1)(2)分別輸出false和true。注意轉換的應用。(int)a實際上是以浮點數a為參數構造了一個整型數,該整數的值是1,(int&)a則是告訴編譯器將a當作整數看(并沒有做任何實質上的轉換)。因為1以整數形式存放和以浮點形式存放其內存數據是不一樣的,因此兩者不等。對b的兩種轉換意義同上,但是0的整數形式和浮點形式其內存數據是一樣的,因此在這種特殊情形下,兩者相等(僅僅在數值意義上)。
注意,程序的輸出會顯示(int&)a=1065353216,這個值是怎么來的呢?前面已經說了,1以浮點數形式存放在內存中,按ieee754規定,其內容為0x0000803F(已考慮字節反序)。這也就是a這個變量所占據的內存單元的值。當(int&)a出現時,它相當于告訴它的上下文:“把這塊地址當做整數看待!不要管它原來是什么。”這樣,內容0x0000803F按整數解釋,其值正好就是1065353216(十進制數)。
通過查看匯編代碼可以證實“(int)a相當于重新構造了一個值等于a的整型數”之說,而(int&)的作用則僅僅是表達了一個類型信息,意義在于為cout<<及==選擇正確的重載版本。

?

#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
int main()
{
float a = 1.0f;
cout << (int)a << endl;
cout << (int&)a << endl;
cout << boolalpha << ( (int)a == (int&)a ) << endl; // 輸出什么?
float b = 0.0f;
cout << (int)b << endl;
cout << (int&)b << endl;
cout << boolalpha << ( (int)b == (int&)b ) << endl; // 輸出什么?
}

(int&)a == static_cast <int&>(a)
(int)&a == reinterpret_cast <int>(&a);

(int&)a 不經過轉換, 直接得到a在內存單元的值,并將其轉換成整數輸出。
(int)a a在內存中的值轉換成int類型

float類型在內存中存儲的形式是 ,符號位 指數 尾數
由754標準:階碼采用增碼(該數補碼的反符號),尾數采用原碼
所以1.0f 在內存中的形式為
0011 1111 1000 0000 0000 0000 0000 0000
所以輸出的是 0x3f800000

0 在內存中的的存儲形式
0000 0000 0000 0000 0000 0000 0000 0000

所以輸出的是0x00000000

所以前面一個是false,后面一個是true。

?

http://blog.csdn.net/lvbinandylau/archive/2009/06/25/4298766.aspx

http://blog.csdn.net/mobidogs/article/details/1530775

#c++ && mfc

總結

以上是生活随笔為你收集整理的(int)a和(int)a的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。