順序結構 ( 四 ) —— 標準數據類型 【互三互三】

C++語言提供了豐富的數據類型,本節介紹幾種基本的數據類型:整型、實型、字符型。它們都是系統定義的簡單數據類型,稱為標準數據類型。

整型(integer)

在C++語言中,整型類型標識符為int。根據整型變量的取值范圍又可將整型變量定義為以下8種整型類型:

類型

定義標識符

數值范圍

short[int]

2(16位)

-32768~32767

[long] int4(32位)-2147483648~2147483647

long [int]4(32位)-2147483648~2147483647

long long [int]8(64位)-9223372036854775808~9223372036854775807

?unsigned [int]2(16位)0~65535

unsigned short [int]2(16位)0~65535

unsigned long [int]4(32位)0~4294967295

unsigned long long8(64位)0~18446744073709551615

實型(Real types)

數據類型定義標識符數值范圍占字節數有效位數
單精度實型float-3.4E-38~3.4E+384(32位)6~7位
雙精度實型double-1.7E+308~1.7E+3088(64位)15~16位

長雙精

度實型

long double-3.4E+4932~1.1E+493216(128位)18~19位
布爾變量bool真true或假false之一1(8位)? ? ? \

字符型(char)

字符常量有以下兩種表示法: ? ? ?

1、普通表示形式

字符常量是由單個字符組成,所有字符采用ASCII編碼,ASCII編碼共有128個字符(表2-4)。在程序中,通常用一對單引號將單個字符括起來表示一個字符常量。如:'a','A','0'等。如字符A的序號是65,字符a的序號是97, 字符0的序號的48。

2、轉義字符表示形式

轉義字符有三種用法:表示控制字符、表示特殊字符、表示所有字符。常用的轉義字符如下表所示。

轉義字符含義
'\n'換行
'\t'水平制表
'\b'退格
'\r'回車(不換行)
'\0'空字符
'\’'單引號
'\”'雙引號
'\\'一個反斜杠字符
'\ddd'1~3位八進制數所代表的字符
'\xhh'1~2位十六進制數所代表的字符

ASCII編碼表見下圖:

例題

例1】分別定義int,short類型的變量各一個,并依次輸出它們的存儲空間大小(單位:字節)。

【參考程序】

#include<iostream>
using namespace std;
int main()
{   int x; short y;  cout<<sizeof(x)<<" "<<sizeof(y)<<endl;                                                   //sizeof返回一個對象或者類型所占的內存字節數return 0;
}

基于char數據的這個特點,它可以和int變量一樣做加減運算,例1說明了這種用法。

例2計算ASCII值

【參考程序】

#include<cstdio>
#include<iostream> 
using namespace std;
int main()
{int b = 'A';               //初始b值b *= 2;                    //相當 b = b*2printf("%d",b);            //輸出b值return 0;
}

【程序解釋】 ?? ?

①程序定義int整型變量b,但是并沒有初始化一個整數,而是字符‘A’,通過ASCII碼表可以查到A對應的十進制ASCII碼值是65。 ?? ?

②然后做b *= 2的運算,b = b*2,即65×2,結果為130。

數據類型轉換

C++語言中,不同數據類型的運算對象進行混合運算,或者需要將一個表達式的結果轉換成期望的類型時,就需要依據數據類型轉換規則進行轉換。

1、混合運算時的類型轉換規則

整型、實型、字符型數據間可以混合運算。在這種情況下,需要將不一致的數據類型轉換成一致的數據類型,然后進行運算。為了保證運算精度,系統在運算時的轉換規則是將存儲長度較短的運算對象轉成存儲長度較長的類型,然后再進行處理。這種轉換是系統自動進行的,具體如圖所示。

混合運算時的類型轉換規則

【說明如下】

1)縱向箭頭表示必定會進行的轉換,如float型數據必先轉換為double型數據,然后與其他操作數 進行運算。與此類似,char型或short型數據必先轉換為int型數據,然后進行運算。 2)橫向箭頭表示當運算對象為不同類型數據時的轉換方向,如int型數據與unsigned型數據進行運 算,int型轉換為unsigned型后方可進行運算。int型與double型進行運算,int型直接轉換為double 型后進行運算,不能理解為先轉換為unsigned int型,然后轉換為long int型,最后再轉換為double型。

2、賦值時的類型轉換規則

當賦值運算符兩側的數據類型不同時,需進行類型轉換,這種轉換是系統自動進行的,轉換規則如下:

1)float、double型賦值給int型:直接截斷小數。 例如,“int i=f+0.6;”,f的值為4.0,右邊算術表達式運算后的結果為4.6的double型數據,根據上述轉換原則,直接舍棄小數,所以i的值為4。

2)int、char型賦值給float、double型:補足有效位以進行數據類型轉換。 例如:“float f=4;”,float為7位有效數字,所以f的值為4.0000000。

3)char型(1字節)賦給int型(4字節):數值賦給int型的低8位,其它位補0。

4)long ?int型賦值給int型:long int型截斷低字節給int型。

5)int型賦值給long int型:賦給long int型的低16位,如果int型的最高位是0,則long int的高16位全為0;如果int型的最高位是1,則long int型的高16位全為1(稱為“符號擴展”)。 6)unsigned int型賦值給int型:直接傳送數值。

7)非unsigned int型賦值給位數相同的unsigned int型:直接傳送數值。

3、強制類型轉換

在C++語言中,還允許強制類型轉換,即將某一數據的數據類型轉換為指定的另一種數據類型,強制類型轉換只是臨時轉換。強制轉換運算符組成的運算表達式的一般形式為:

(類型名)(表達式) ? ?

例如:已知有變量定義“int b=7;float a=2.5,c=4.7;”,求下面算術表達式的值。 ? ? ? ? ?

a+(int)(b/3*(int)(a+c)/2.0)%4

根據運算符的結合性規則,表達式要自左至右執行,b/3為2,2*(int)(a+c)為14,14/2.0為7.0,強制類型轉換后為7,7%4為3,a的值2.5與3相加,最終結果為5.5。

4、例題

計算成績

【題目描述】 ? ?

牛牛最近學習了C++入門課程,這門課程的總成績計算方法是: ? ?

總成績=作業成績×20%+小測成績×30%+期末考試成績×50% ? ?

牛牛想知道,這門課程自己最終能得到多少分(整數)。

樣例輸入:100 ?100 ?80 ? 樣例輸出:90

【分析】 ? ? 如果根據題目描述,將A,B,C定義為整型數據,而在運算過程中出現浮點型數據,就會涉及數據類型的轉換,最后以整型輸出。 程序如下:

#include<iostream>
using namespace std;
int main(){int A,B,C,ans;cin>>A>>B>>C;                    //輸入A,B,C成績ans=(int)(A*0.2+B*0.30+C*0.50);  //強制類型轉換,不加(int)自動轉換cout<<ans;                       //輸出總成績return 0;
}

總結?

有不懂的地方可以si我,和我一起學習C++吧。

備注

還沒有下載DEV-C++的小伙伴們可以私我拿到免費安裝包

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:
http://www.pswp.cn/diannao/44617.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/44617.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/44617.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

開源大勢所趨

一、開源項目的發展趨勢 技術棧多樣化與專業化&#xff1a;隨著技術的不斷進步&#xff0c;開源項目涵蓋了從云計算、大數據、人工智能到區塊鏈、物聯網等各個領域&#xff0c;技術棧日益豐富和專業化。這種趨勢使得開發者能夠根據自己的需求選擇最適合的技術工具&#xff0c;促…

dify-api的Dockerfile分析

一.dify-api的Dockerfile文件 dify-api的Dockerfile文件如下所示&#xff1a; # base image FROM python:3.10-slim-bookworm AS baseLABEL maintainer"takatostgmail.com"# install packages FROM base as packagesRUN apt-get update \&& apt-get install…

nginx安裝配置視頻頻服務器-windows

編譯安裝nginx 1、安裝perl 安裝地址: https://strawberryperl.com&#xff0c;選擇msi安裝程序即可 2、安裝sed for windows 下載地址&#xff1a;https://sourceforge.net/projects/gnuwin32/files/sed/&#xff0c;執行安裝程序結束后&#xff0c;將安裝包bin目錄配置到…

【seo常見的問題】搜索引擎

1、讓網站訪問量提高的最好的方法是什么? 了解搜索引擎行為和搜索用戶的行為&#xff0c;就是通過觀察搜索引擎排名機制獲得有效途徑&#xff0c;提供效率&#xff0c;并且通過一些相關數據&#xff0c;了解到用戶的搜索行為。 2、我要你把一個站的關鍵詞排名排到首頁&#x…

【Adobe】動作捕獲和動畫制作軟件Character Animator

Adobe Character Animator 是一款由Adobe公司出品的動作捕獲和動畫制作軟件&#xff0c;旨在幫助用戶直觀地制作2D&#xff08;二維&#xff09;人物動畫、實時動畫&#xff0c;并發布動畫。這款軟件功能強大、操作簡單&#xff0c;非常適合動畫制作者、直播主以及社交媒體內容…

【STM32 ARM】操作寄存器控制led

文章目錄 前言GPIO操作方法led原理圖設置時鐘APB的概念 設置APB設置輸出引腳設置引腳高低電平寄存器尋找寄存器地址 總結 前言 STM32是STMicroelectronics&#xff08;意法半導體&#xff09;公司的一款32位Flash微控制器產品&#xff0c;基于ARM Cortex?-M內核。STM32系列微…

Groovy vs Kotlin 在Gradle配置文件中的差異與選擇

人不走空 &#x1f308;個人主頁&#xff1a;人不走空 &#x1f496;系列專欄&#xff1a;算法專題 ?詩詞歌賦&#xff1a;斯是陋室&#xff0c;惟吾德馨 目錄 &#x1f308;個人主頁&#xff1a;人不走空 &#x1f496;系列專欄&#xff1a;算法專題 ?詩詞歌…

beyond Compare連接 openWrt 和 VsCode

連接步驟總結 1. 新建會話 -> 文件夾比較 2.點擊瀏覽文件夾 3.在彈出頁面 配置 ftp 3.1&#xff09;選中ftp 配置文件 3.2)選中ssh2 3.3)填寫我們需要遠端連接的主機信息 先點擊連接并瀏覽 得到下方文件夾 彈出無效登錄&#xff0c;說明需要密碼 我們返回右鍵剛剛創建的新 …

C++ | Leetcode C++題解之第227題基本計算器II

題目&#xff1a; 題解&#xff1a; class Solution { public:int calculate(string s) {vector<int> stk;char preSign ;int num 0;int n s.length();for (int i 0; i < n; i) {if (isdigit(s[i])) {num num * 10 int(s[i] - 0);}if (!isdigit(s[i]) &&am…

【智能制造-14】機器視覺軟件

CCD相機和COMS相機? CCD&#xff08;Charge-Coupled Device&#xff09;相機和CMOS&#xff08;Complementary Metal-Oxide-Semiconductor&#xff09;相機是兩種常見的數字圖像傳感器技術&#xff0c;用于捕捉和處理圖像。 CCD相機&#xff1a; CCD相機使用一種稱為CCD的光電…

北方論叢期刊

《北方論叢》投稿指南 為適應學術期刊文獻信息傳播現代化的需要&#xff0c;全面提高期刊質量&#xff0c;擴大學術交流&#xff0c;根據《中國學術期刊(光盤版)檢索與評價數據規范》《中國高等學校社會科學學報編排規范》以及其他國家標準和法規文件&#xff0c;并結合《北方論…

如何用webpack來優化前端性能?

Webpack 是一個現代 JavaScript 應用程序的靜態模塊打包器(module bundler)。它通過分析你的項目結構&#xff0c;找到 JavaScript 模塊以及其它的一些瀏覽器不能直接運行的拓展語言&#xff08;如SCSS, TypeScript等&#xff09;&#xff0c;并將其轉換和打包為合適的格式供瀏…

數據分析入門指南:表結構數據(三)

在數字化轉型的浪潮中&#xff0c;表結構數據作為企業決策支持系統的核心要素&#xff0c;其重要性日益凸顯。本文深入剖析了表結構數據的本質特征、高效處理策略&#xff0c;并探討了其在現代商業智能環境中的廣泛應用&#xff0c;旨在為數據分析師與決策者提供前沿洞察與實戰…

人工智能算法工程師(中級)課程3-sklearn機器學習之數據處理與代碼詳解

大家好&#xff0c;我是微學AI,今天給大家分享一下人工智能算法工程師(中級)課程3-sklearn機器學習之數據處理與代碼詳解。 Sklearn&#xff08;Scikit-learn&#xff09;是一個基于Python的開源機器學習庫&#xff0c;它提供了簡單有效的數據挖掘和數據分析工具。Sklearn包含了…

華為HCIP Datacom H12-821 卷34

1.單選題 防火墻默認已經創建了一些安全區域,以下哪一個安全區域不是防火墻上默認存在的? A、Trust B、DMZ C、Internet D、Local 正確答案&#xff1a; C 解析&#xff1a; 防火墻默認情況下為我們提供了三個安全區域&#xff0c;分別是 Trust、DMZ和Untrust 2.判斷題 …

電腦快捷鍵:提升效率的秘密武器

在現代社會中&#xff0c;電腦已經成為我們生活中不可或缺的工具。然而&#xff0c;要想充分利用電腦的功能&#xff0c;熟練掌握一些快捷鍵是必不可少的。本文將為您介紹一些常用的電腦快捷鍵&#xff0c;幫助您提高工作效率&#xff0c;節省寶貴的時間。 Windows 系統快捷鍵 …

【國產開源可視化引擎Meta2d.js】鷹眼地圖

鷹眼地圖 畫布右下角彈出一個縮略導航地圖&#xff0c;鼠標點擊可以跳到指定位置。 在線體驗&#xff1a; 樂吾樂2D可視化 示例&#xff1a; // 顯示縮略地圖 meta2d.showMap();// 關閉縮略地圖 meta2d.hideMap();

樹形結構的一種便捷實現方案

背景 在開發過程中經常需要把平鋪的數據結構轉為樹形的數據結構&#xff0c;例如多級菜單、組織機構等。 實現方案有很多種。 1、可以使用遞歸查詢&#xff0c;但是這樣數據一多會導致頻繁的多次查詢數據庫&#xff0c;產生很多額外的IO開銷&#xff0c;總體的響應時間會比較…

【uniapp微信小程序】uniapp微信小程序——頁面通信

uniapp微信小程序——頁面通信 在開發微信小程序過程中&#xff0c;頁面之間的通信是一個常見需求。在使用 uniapp 開發微信小程序時&#xff0c;我們可以采用多種方式實現頁面之間的數據傳遞和狀態共享。本文將詳細介紹幾種常見的實現方式&#xff0c;以供開發者參考。 1. 頁…

谷歌內置AI部署

感謝閱讀 準備工作開啟功能查看下載情況安裝插件效果截圖網頁版地址&#xff08;需進行前面的所有步驟&#xff09; 準備工作 點我下載谷歌dev版本 注意這個版本不需要卸載之前版本 開啟功能 使用下載的瀏覽器依次導航到下面兩個地方&#xff0c;然后點擊enablebypass以及en…