1. 程式人生 > >型別轉換(某面試例題)

型別轉換(某面試例題)

題目來源:《程式設計師面試寶典(第五版)》

參考博文:

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; // 

輸出什麼?

答案:false true 或 0 1

分析:

(int&a)與*((int*)&a)等價;&a則是a的記憶體地址的二進位制表示

(int)a實際上是以浮點數a為引數構造了一個整型數,該整數的值是1。

(int&)a則是告訴編譯器將a當作整數看(並沒有做任何實質上的轉換)。

因為1以整數形式存放和以浮點形式存放其記憶體資料是不一樣的,因此兩者不等。

對b的兩種轉換意義同上,但是0的整數形式和浮點形式其記憶體資料是一樣的,因此在這種特殊情形下,兩者相等(僅僅在數值意義上)。


相關推薦

型別轉換面試例題

題目來源:《程式設計師面試寶典(第五版)》參考博文:float a = 1.0f;cout < < (int)a < < endl;cout < < (int&

swift-型別轉換as?和as!

// 1, as? as! 的用法 -> 將any型別裝換成具體的型別 let dic : [String : Any] = ["name" : "zhang", "age" : 13] // 2.1 通過as? 轉成我們需要的型別 // as?, 通過

java中型別轉換String float int

這幾種型別裝換,一般都會用到parseInt()、parseFloat() 、valueof()方法,但是這是有區別的。 看看他們的返回型別不同 static int parseInt(String s) 將字串引數作為有符號的十進

java中常用到的型別轉換char轉int

public class SSS { /** * author:拖拉機科技 */ public static void main(String[] args) { //1.字元型轉化為int陣列(1) char c='1'; int i=(int)c; S

java資料型別型別轉換必須清楚

資料型別分類: 主要分為 基本型別、引用型別兩大類;   基本型別 轉換原則  型別轉換主要在在 賦值、方法呼叫、算術運算 三種情況下發生。  另外還有是直接數的賦值:先通過直接數判斷其型別,然後基本原則和上面談到的賦值

JS幾種資料型別轉換最全

一、轉為字串:使用 .toString或者String。 1、 .toString()方法:注意,不可以轉null和underfined //轉為字串-->toString方法 var bool=true; console.log(bool.toString()); //注意,toSt

強制型別轉換C++學習筆記 13

無論是強制轉換或是自動轉換,都只是為了本次運算的需要而對變數的資料長度進行臨時性轉換,這並不改變該變數的型別。 一、 C語言中強制型別轉換的一般形式為: (資料型別)表示式 例1: 求x與2進行取餘運算。 (int) x % 2 因為取餘運算的運算元必須是整數,如果x是實數

go學習筆記-型別轉換Type Conversion

型別轉換(Type Conversion) 型別轉換用於將一種資料型別的變數轉換為另外一種型別的變,基本格式 type_name(expression) type_name 為型別,expression 為表示式。 示例 func testCov() { var a = 20 var

C++字元型別轉換BSTR、_bstr_t、CString、char *、LPCTSTR轉換

1、CString轉BSTR BSTR bstr; CString strSql;  bstr = strSql.AllocSysString(); …  SysFreeString(bstrText); // 用完釋放&

Java種的基本資料型別轉換自動、強制、提升

Java種的8大基本資料型別,以及它們所佔記憶體大小和範圍 1、自動型別轉換 自動型別轉換是指:數字表示範圍小的資料型別可以自動轉換成範圍大的資料型別。 如: long l = 100; int i = 200; long ll = i; 具體自動轉換如如下圖所示:

2.6 使用for迴圈遍歷檔案 2.7 使用while迴圈遍歷檔案 2.8 統計系統剩餘的記憶體 2.9 資料型別轉換計算計算mac地址 3.0 資料型別轉換列表與字典相互轉換

2.6 使用for迴圈遍歷檔案 open r:以只讀方式開啟 w: 以寫方式開啟 a: 以追加模式開啟 r+: 以讀寫模式開啟 w+: 以讀寫模式開啟(參見w) a+: 以讀寫模式開啟(參見a) rb: 以二進位制模式開啟 read 我們先寫一個檔案,叫1.txt 內容如下 111 22

C++強制型別轉換dynamic_cast,static_cast, const_cast, reinterpret_cast

[toc] C++同時提供了4種新的強制型別轉換形式(通常稱為新風格的或C++風格的強制轉 型):const_cast(expression)、dynamic_cast(expression)、 reinterpret_cast(expression)和 st

資料型別轉換java

預設轉換(從小到大 /*聯想式理解:從弱變強 因為程式碼的世界是正能量的,所以可以默許蛻變得原來越好哇*/)      byte(1),short(2),char -> int(4) -> long(8) ->float(4)

C++字串的型別轉換std::string, std::wstring, c-string

一、std::string與std::wstring共有篇(c++11新添) 1)string(wstring) to numerical value | string(wstring)轉化成數值

類的自動轉化和強制型別轉換C++

可以將類定義成與基本型別或另一個類相關,使得從一種型別轉換為另一種型別是有意義的。 當一個類的建構函式中,有隻有接受一個引數的建構函式,這個建構函式就能作為轉換函式。 #pragma once #ifndef STONEWT_H_ #define STONEWT

JavaScript 資料型別轉換

顯式轉換 通過手動進行型別轉換,Javascript提供了以下轉型函式: 轉換為數值型別:Number(mix)、parseInt(string,radix)、parseFloat(string) 轉換為字串型別:toString(radix)、String(mix) 轉換為布林型別:Boolean(mi

C++字元型別轉換BSTR、_bstr_t與CString、char *轉換

1、CString轉BSTR BSTR bstr; CString strSql;  bstr = strSql.AllocSysString(); …  SysFreeString(bstrText

LBS——座標型別轉換JS

/* 座標轉換及距離計算 */ var GPS_Coord = { PI: 3.14159265358979324, x_pi: 3.14159265358979324 * 3000.0 / 180.0, delta: function (lat, lon) {

LBS——座標型別轉換C#

座標型別轉換 座標轉化 座標模型 WGS84座標系:即地球座標系,國際上通用的座標系。裝置一般包含GPS晶片或者北斗晶片獲取的經緯度為WGS84地理座標系,谷歌地圖採用的是WGS84地理座標系(中國範圍除外); GCJ02座標系:即火星座標系,是

java中byte陣列與int型別轉換兩種方式

java中byte陣列與int型別的轉換,在網路程式設計中這個演算法是最基本的演算法,我們都知道,在socket傳輸中,傳送、者接收的資料都是 byte陣列,但是int型別是4個byte組成的,如何把一個整形int轉換成byte陣列,同時如何把一個長度為4的byte陣列轉