C primer學習日記 2 1基本內建型別

2021-07-30 06:19:24 字數 1966 閱讀 2186

2.1.2節可以說僅涉及到帶符號型別與無符號型別的轉換

如下面**中 u + i3 ,表示式中既有帶符號型別又有無符號型別,帶符號數會自動地轉換成無符號數。即 i3 轉換成 4294967254 ,與 u 相加結果為 4294967264。其結果與先進行計算 即 10 +(-42)= -32,

再將(-32)取模所得結果一致。

unsinged u = 10, u2 = 42;

std::cout

<< u2 - u << std::endl; //結果為32

std::cout

<< u - u2 << srd::endl; //結果為4294967264

int i = 10, i2 = 42, i3 = -42;

std::cout

<< i2 - i << std::endl; //結果為32

std::cout

<< i - i2 << std::endl; //結果為-32

std::cout

<< i - u << std::endl; //結果為0

std::cout

<< u - i << std::endl; //結果為0

std::cout

<< u + i3 << std::endl; //結果為4294967264

std::cout

<< i - u2 << std::endl; //結果為4294967264

std::cout

<< u2 + (-i) << std::endl; //結果為32

std::cout

<< -i - u2 << std::endl; //結果為4294967244

std::cout

<< -i - i2 << std::endl; //結果為-52

資料型別轉換的原則及注意問題

一、兩條自動轉換原則和一條強制性轉換原則。

設:x為短整型(2b),y單精度型(4b),z為字元型(1b)。

1、表示式計算中資料型別的自動轉換原則

參加運算的各個資料都轉換成長度最長的資料型別。結果為資料長度最長的資料型別。例如:

① x+y x先自動轉換成單精度型,後計算x+y,結果為單精度型;

② x+z z先自動轉換成短整型,後計算x+z,結果為短整型。

2、把運算結果賦給變數時資料型別的自動轉換原則

先將運算結果的資料型別自動轉換成變數的資料型別,然後賦給變數。例如:

① y=x+z x+z運算結果為短整型,自動轉換成單精度型,再賦給變數 y.

② x=y+z y+z運算結果為單精度型,自動轉換成短整型,再賦給變數 x.

3、運算結果的強制性資料型別轉換原則

強制性資料型別轉換格式:(資料型別符)(表示式)

先按自動轉換原則計算表示式的值,後將其轉換成指定的資料型別。

僅當表示式是單個常量或變數時,表示式括號可省略。例如:

①(float)x 對 x 的值強制轉換成單精度;

②(float)x+m 先對 x 的值強制轉換成單精度,後再和 m 進行加運算;

③(float)(x+m) 先計算(x+m),後把(x+m)的值強制轉換成單精度。

二、型別轉換的注意問題

1、表示式的型別轉換是臨時的,式中的常量或變數的原型別均不改變。

2、把運算結果賦給變數時,若運算結果的資料長度 > 變數的資料長度,會截去超長部分,

將可能導致精度降低或產生不確定的值。

3、型別轉換占用系統時間,過多的轉換會降低程式執行效率。除必要的外,應選擇合適的資料型別。

main()

練習2.8:請利用轉義序列編寫一段程式,要求先輸出2m,然後轉到新一行。修改程式使其先輸出2,然後輸出製表付,再輸出m,最後轉到新一行。

#include 

int mian()

C primer學習日記 第3章習題

3.2從標準輸入中一次讀入一整行。修改程式使其一次讀入乙個詞 include include intmain32 3.4讀入兩個字串,比較是否相等並輸出結果。改寫程式,比較字串長度是否相等。比較字串大小 include include intmain 比較字串長度 include include i...

C Primer 學習筆記 1 基本語言

std endl 注意 效果不僅僅是換行,還會重新整理緩衝區,以便立即看到結果。在debug過程中的log應該每句都用endl重新整理緩衝區,避免因崩潰導致的緩衝區資訊丟失,造成除錯誤導。ms dos視窗中輸入ctrl z來輸入檔案結束符 注意 在一些簡短的小測試程式中,經常會用while std ...

C Primer學習筆記一 基本入門

g 獲得程式狀態 記住 和 返回的結果都是左運算元,也就是輸入流和輸出流本身。endl 這是乙個被稱為操縱符 manipulator 的特殊值,效果是結束當前行,並將裝置關聯的緩衝區 buffer 中的內容刷到裝置中。unix和mac下鍵盤輸入檔案結束符 ctrl d,windows下 ctrl z...