C語音之基本數據類型轉換

 

文章目錄

  • 基本數據類型轉換
    • 1. 自動類型轉換
      • 1. 自動類型轉換
      • 2. 數據類型按精度(容量)大小排序爲
      • 3. 數據類型自動轉換表規則
      • 4. 案例演示
      • 5. 自動類型轉換細節說明
    • 2. 強制類型轉換
      • 1. 強制類型轉換
      • 2. 案例演示
      • 3. 強制類型轉換細節說明
      • 4. 基本數據類型轉換-練習題

 

基本數據類型轉換

1. 自動類型轉換

1. 自動類型轉換

介紹:當 C 程序在進行賦值或者運算時,精度小的類型自動轉換爲精度大的數據類型,這個就是自動類型轉換。ide

2. 數據類型按精度(容量)大小排序爲

在這裏插入圖片描述

3. 數據類型自動轉換表規則

在這裏插入圖片描述

4. 案例演示

  • 演示一下基本數據類型轉換的基本狀況。
#include<stdio.h>

void main(){
	char c1 = 'a';
	int num1 = c1;//ok
	double d1 = num1;//ok

	short s1 = 10;
	int num2 = 20;
	int num3 = s1 + num2;
	
	printf("d1=%f \n",d1);
	printf("num3=%d",num3);
	getchar();
}

在這裏插入圖片描述

5. 自動類型轉換細節說明

  1. 有多種類型的數據混合運算時,系統首先自動將全部數據轉換成精度最大的那種數據類型,而後再進行計算(如 int 型和 short 型運算時,先把 short 轉成 int 型後再進行運算)。
  2. 若兩種類型的字節數不一樣,轉換成字節數大的類型,若兩種類型的字節數相同,且一種有符號,一種無符號,則轉換成無符號類型
  3. 在賦值運算中,賦值號兩邊量的數據類型不一樣時,賦值號右邊的類型將轉換爲左邊的類型,若是右邊變量的數據類型長度比左邊長時,將丟失一部分數據,這樣會下降精度,丟失的部分按四捨五入向前舍入
  4. 代碼演示:
#include<stdio.h>

void main(){
	float f1 = 1.1f;
	double d2 = 4.58667435;
	f1 = d2;//出現精度損失(double->float)
	printf("f1=%.8f",f1);
	getchar();

在這裏插入圖片描述

2. 強制類型轉換

1. 強制類型轉換

  • 介紹
    將精度高的數據類型轉換爲精度小的數據類型。使用時要加上強制轉換符 ( ),但可能形成精度下降或溢出,格外要注意。
  • 強制類型轉換通常格式以下:
(類型名) 表達式

什麼是表達式: 任何有值均可以稱爲表達式,好比 1+ 2, int num = 23d

  • 這種強制類型轉換操做並不改變操做數自己

2. 案例演示

#include<stdio.h>

void main(){
	double d1 = 1.934;
	int num1 = (int)d1;//注意:不進行四捨五入,而是直接截斷小數點的部分

	printf("num1=%d d1=%f",num1,d1);
	getchar();
}

在這裏插入圖片描述

3. 強制類型轉換細節說明

  1. 當進行數據的從 精度高——>精度低,就須要使用到強制轉換
  2. 強轉符號只針對於最近的操做數有效,每每會使用小括號提高優先級
  3. 案例演示:
  • (int)3.5 只針對這個數有效,轉成 3,最後結果 39.0 爲double型,強制轉成 int 後去掉 0
int num2 = (int)3.5 * 10 + 6 * 1.5; // 3 * 10 + 6 * 1.5 = 30+9.0 = 39.0

printf("\n num2=%d",num2);

在這裏插入圖片描述

int num3 = (int)(3.5 * 10 + 6 * 1.5); // 35.0+9.0=44.0

printf("\n num3=%d",num2);

在這裏插入圖片描述

4. 基本數據類型轉換-練習題

  • 判斷是編譯是否會經過?
char c = 'a';
int i = 5;
float d = .314F;
double result = c+i+d; // c+i+d 類型是 float -> double ok
  • 下面的還有一個案例
#include <stdio.h>
void main() {
char c = 'a';
int i = 5;
float d = .314F;
double d2 = 1.0;
//double result = c+i+d; // float -> double
char result = c+i+d+d2; // 提示? // 警告 double -> char
}
相關文章
相關標籤/搜索