C語言:數據類型(基本數據類型)、類型轉換(自動轉換、強制轉換)

来源:https://www.cnblogs.com/yuxiangqiezi/archive/2020/05/18/12913769.html
-Advertisement-
Play Games

歡迎關註我的公眾號“老餘筆記”,也可以訪問我的個人博客www.yuxiaoshao.cn 有需要的可以qq交流學習1316677086 或者加入我的群里交流:901648700 一起分享資源,交流學習 數據類型 數據類型就是用來聲明不同類型的變數或函數的一個廣泛的系統。變數的類型決定了變數存儲在記憶體 ...


歡迎關註我的公眾號“老餘筆記”,也可以訪問我的個人博客www.yuxiaoshao.cn
有需要的可以qq交流學習1316677086 或者加入我的群里交流:901648700 一起分享資源,交流學習

數據類型

數據類型就是用來聲明不同類型的變數或函數的一個廣泛的系統。變數的類型決定了變數存儲在記憶體中占用的空間。

數據類型分為
基本數據類型/算數類型:數值類型(整數類型,浮點型),字元型char
構造數據類型:數組、結構體、共用體、枚舉
指針類型
void類型(空類型)void

在這裡插入圖片描述

基本數據類型

我們常用的數字有整數和小數。所以基本數據類型類型又分為了整數類型即整型(當然這裡的整型不是南韓的整形)和浮點類型即浮點型;

註意,各種類型的存儲大小與系統位數有關,但目前通用的以64位系統為主。

整型

數據類型 占用大小
short 短整型 2 位元組 取值範圍:-32,768 到 32,767
int 整型 【常用】 2或4個位元組(一般都占用2個位元組) 取值範圍:-32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647
long 長整型 4 位元組 取值範圍:-2,147,483,648 到 2,147,483,647

其實char也是int類型,在電腦中,字元也是通過對照ACILL表的int數值轉換的。
想知道ACILL表是啥自己百度

字元型

數據類型 占用大小
char 字元型【常用】 1位元組 取值範圍:(-128 到 127 或 0 到 255)

因為-128 到 127 或 0 到 255也在int【-32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647 】的取值範圍之內,所以在小於127大於-128的範圍里的時候 int可以和char類型相互轉換對應的字元

浮點類型

數據類型 占用大小
float 單精度浮點 【常用】 4 位元組 取值範圍(1.2E-38 到 3.4E+38 )6 位小數
double 雙精度浮點 【常用】 8 位元組 取值範圍 (2.3E-308 到 1.7E+308 )15 位小數
long double 16 位元組 取值範圍(3.4E-4932 到 1.1E+4932 )19 位小數

計算某個變數在特定平臺上的準確大小

使用sizefof運算符

#include <stdio.h>
  #include <limits.h>
   
  int main()
  {
  //表達式 sizeof(type) 得到對象或類型的存儲位元組大小。
     printf("int 存儲大小 : %lu \n", sizeof(int));
     //%lu 為 32 位無符號整數
     
     return 0;
  }
  

類型轉換

自動類型轉換

C 語言中如果一個表達式中含有不同類型的常量和變數,在計算時,會將它們自動轉換為同一種類型;

int i = 5.5;
/*這裡的5.5預設是double類型,
通過C的自動轉換機制,會攝取掉小數部分,只保留整數部分*/

自動轉換規則:
浮點數賦給整型,該浮點數小數被捨去; 例:int a = 1.2; //這裡的.2會被捨去 只會保留整數部分
整數賦給浮點型,數值不變,但是被存儲到相應的浮點型變數中; 例 float b = 5; //這裡的 5 會被轉換成5.0 作為浮點型存儲在記憶體里

強制類型轉換

使用(),在括弧里填寫需要轉換的類型
使用基本數據類型的時候註意,從大範圍強制轉換為小範圍會存在記憶體溢出的現象

#include <stdio.h>
int main () {
float f,x=3.6,y=5.2;
    int i=4,a,b;
    a=x+y;
    b=(int)(x+y);//(x+y)是浮點型 這裡會強制轉換為int型
    f=10/i;
    printf("a=%d,b=%d,f=%f,x=%f\n",a,b,f,x);

return 0 ;
}

C中的“布爾類型”

在C語言里,是沒有bool類型的,所以 C 語言判斷真假時以 0 為假,非 0 為真(一般用1)

C99 提供了 _Bool 型,所以布爾類型可以聲明為 _Bool flag。
_Bool 依然仍是整數類型,但與一般整型不同的是,_Bool 變數只能賦值為 0 或 1,非 0 的值都會被存儲為 1。
C99還提供了一個頭文件 <stdbool.h> 定義了 bool 代表 _Bool,true 代表 1,false 代表 0。
只要導入 stdbool.h ,就能非常方便的操作布爾類型了

#include <stdio.h>
 //導入 stdbool.h 來使用布爾類型
 #include <stdbool.h>
 //計算n!,n的值在main中定義
int main ()
{ 
  int n = 10;    //計算疊乘數
  int sum = 1; //用來存放疊乘的結果
  bool flag = false;    //疊乘標記
  
  int num = n;    //迴圈次數
  while( !flag )
  {
   sum = sum * (num--);
   //當num=1時結束迴圈
   if( num == 1)
   {
    flag = true;
   }
  }
  printf ("%d的疊乘值為 %d \n", n, sum);
  return 0;

}


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、發展由來 POP OOP AOP DDD POP:(面向過程編程) 描述:考慮問題是1234步驟 特點:簡單,無法應對複雜需求 舉例子:把食物放冰箱 第一步:打開冰箱 第二步:塞進去食物 第三步:關冰箱 OOP:面向對象編程 特點:把事物作為對象考慮 特性:封裝、繼承、多態 描述:對象交互,完成 ...
  • 使用CLion替換VSCode,開發 chromium kernel(for Linux) VSCode 不適合開發像chromium 這樣的巨型c++工程,Microsoft的cpptools和mono(.net移植,被VScode用作來寫code intellisense)存在的嚴重的memor ...
  • 1. 單向一對多配置 單向一對多使用@OneToMany標簽進行配置,在一方有一個集合屬性與多方進行關聯,集合可以是List或者Set,區別是List是有序、Set是無序不重覆。 對應在一方配置@OneToMany: /** * 單向一對多:使用JPA配置 */ @Entity @Table(nam ...
  • 一、寫在開頭 無聊寫寫。最近學習做python GUI, 感覺比網頁落後好多。我只是為了完成老師佈置的任務, 做一個配合ZBar掃描條形碼的小程式, 不打算過多深究二維碼什麼的。由於pyqt5貌似不是很火爆, 沒多少成系統的教程。我能找到的就是 "http://code.py40.com/pyqt5 ...
  • 一、IO與Properties的聯合應用 1.Properties解析(可以解析unicode碼) package com.bjpowernode.java_learning; import java.util.*; import java.io.*; public class D116_1_Pro ...
  • 時不時地我們需要導出一些數據用作備份、查看報表等,如果用 導出會非常慢。而用 ,則速度非常快。 準備 執行文件 : sql set colsep , set feedback off set heading off set newp none set pagesize 0 set linesize ...
  • 導入配置 如何優雅的導入scrapy中settings.py的配置參數呢?總不能用 吧,或者 吧。這看起來一點逼格都沒有。 scrapy提供了導入設置的方法:from_crawler 接著,只要在__init__接收這些參數就可以了。 而在一些官方的組件的源碼中會這樣使用,不過這看起來有點多此一舉 ...
  • "這篇博客" 說了怎麼去hook微信來接收好友消息和發送消息,現在就來實現一下,寫了個成品軟體 軟體下載地址:https://www.lanzous.com/ib4g30j 界面很簡單,如圖:(需要註意的是軟體只匹配微信版本2.8.0.121) 主要也就兩個功能。 1、自動聊天:使用騰訊AI開放平臺 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...