c語言 字符轉int型,C語言—類型之間的轉換

原標題:C語言—類型之間的轉換

當混合不同類型的數據進行計算時,便會發生類型轉換。

當不同類型的數據進行計算時,應首先將操作數轉換成相同的數據類型,然后再進行計算。

類型轉換有兩種形式,即隱式類型轉換和顯示類型轉換。

隱式類型轉換

所謂隱式類型轉換就是在編譯時由編譯器程序按照一定規則自動完成,而不需要人為的干預。因此,在表達式中如果有不同類型的數據參與同一運算時,編譯器就在編譯時自動按照規定的規則將其轉換為相同的數據類型。

C語言規定的轉換規則是由低級向高級轉換。例如,如果一個運算符帶有兩個類型不同的操作數時,那么在操作之前先將較低的類型轉換為較高的類型,然后進行運算,運算結果是較高的類型。更確切地說,對于每一個算術運算符,都遵循如圖所示的規則。

223046f943b655c9f1dc0617a8b876a8.png

當整型數據和雙精度數據進行運算時,先將整型數據轉換成雙精度型數據,再進行運算,結果為雙精度類型數據。

當字符型數據和實型數據進行運算時,C先將字符型數據轉換成實型數據,然后進行計算,結果為實型數據。

注意:在賦值語句中,如果賦值號左右兩端的類型不同,則將賦值號右邊的值轉換為賦值號左邊的類型,其結果類型還是左邊類型。

也可以將圖3-3所示的規則用圖3-4表示。圖3-4中的水平箭頭表示必定轉換,縱向箭頭表示兩個操作對象類型不同時的轉換方向。

f4058e4f54a51889ae0f953e5dfbbf2f.png

下面舉例說明類型轉換的規則。例如執行:

float x;

x = 100 + 3.1415926

會按如下步驟進行處理:首先將整型100轉換為double型,然后進行運算,其結果為double型。最后將表達式的結果轉換為float并賦給x。

顯式類型轉換

顯示類型轉換又叫強制類型轉換,它不是按照前面所述的轉換規則進行轉換,而是直接將某數據轉換成指定的類型。這以在很多情況下簡化轉換。例如,

int i;

i = i + 9.801;

按照隱式類型轉換處理方式,在處理i=i+9.801時,首先整型i轉換為double型,然后進行相加,結果為double型,再將double型轉換為整型賦給i。

int i;

i = i + (int)9.801;

這時直接將9.801轉換成整型,然后與i相加,再把結果賦給i。這樣可把二次轉換簡化為一次轉換。

顯示類型轉換的方法是在被轉換對象(或表達式)前加類型標識符,,類型標識符用小括號括起來,其格式是:

(類型標識符)表達式

例如,有如下程序片段:

int main()

{

int a = 1;

int b = 0;

float c = 1.8f;

b = a + (int)c;

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

return 0;

在上述程序的運行過程中,在執行語句b=a+int(c)時,將c的值臨時強制性轉化為int型,但變量c在系統中仍為實型變量,也就是說,強制類型轉換不會改變變量的原值,這一點很重要,不少初學者忽略了這個問題。

責任編輯:

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

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

相關文章

Java高級面試題!java構造方法的作用和特點

1. Redis面試專題 絕大部分寫業務的程序員,在實際開發中使用 Redis 的時候,只會 Set Value 和 Get Value 兩個操作,對 Redis 整體缺乏一個認知。這里以面試題的形式對 Redis 常見問題做一個總結,解決大家的知識盲點。 什么是Red…

c語言程序改頻率,求問。這個fft c語言程序 采樣的聲音頻率為多少?

timernum,timernum2,LEDnum3,Ltime;//用于分離/*加入數組用于顯示相應led燈數目*/uchar lednum[]{0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};//0-7的顯示數組 P2組控制int xdata FftReal[SAMPLE_NUM];int xdata FftImage[SAMPLE_NUM];sbit p30P3^0;sbit p31P3^1;sbit p3…

Java高級面試題!java編程思想怎么學

專題5:Java序列化 1、什么是java序列化,如何實現java序列化? 2、保存(持久化)對象及其狀態到內存或者磁盤 3、序列化對象以字節數組保持-靜態成員不保存 4、序列化用戶遠程對象傳輸 5、Serializable 實現序列化 6、writeObject 和 readO…

計算星期c語言編碼,[轉載]計算任何一天是星期幾的C語言源代碼.

[轉載]計算任何一天是星期幾的C語言源代碼.#include int main(){int day,mn,yr,i,days0,s,k;int mont[13]{0,31,28,31,30,31,30,31,31,30,31,30,31};char wek[][9]{ {S,u,n,d,a,y},{M,o,n,d,a,y},{T,u,e,s,d,a,y},{W,e,d,n,s,d,a,y},{T,h,u,r,s,d,a,y},{F,r,i,d,a,y},{S,a,t,u,…

Java高級:mysqllimit兩個參數

零基礎如何學習Java? 首先,你要明白一點,Java入門不難! 無論你是從事哪個行業,興趣一定是最好的老師,也是你學習的動力。 學習方式1:自學 自學模式其實我個人不建議絕大部分的人選擇&#x…

db2 c語言游標名稱可以是變量,mysql?c語言?游標能取多行嗎

滿意答案xuyingcxm2015.02.03采納率:45% 等級:12已幫助:7182人1、 無返回結果語句,如:INSERT,UPDATE,DROP, DELETE等2、 select語句返回單行變量并可傳給本地變量(select ..into)3、 返回多行結果集的select語句,并…

從入門到精通!javaidea安裝教程

一、秒殺系統架構設計都有哪些關鍵點? 二、設計秒殺系統時應該注意的5個架構原則 架構原則:“4要1不要” 1.1.數據要盡里少 1.2. 請求數要盡里少 1.3.路徑要盡里短 1.4.依賴要盡里少 1.5. 不要有單點2不同場景下的不同架構案例 三、如何才能做好動靜分離&#xff1…

-wl是不是c語言的標識符,C語言基礎知識考試

第一章 C語言基礎知識一、選擇題1.C語言規定,必須用 作為主函數名。(0級) A)Function B)include C)main D)stdio2.一個C程序可以包含任意多個不同名的函數,但有且僅有一個 ,一個C程序總是從 開始執行。(0級) A)過程 B)…

從入門到精通!java可視化編程軟件哪個好

1、我往Redis里寫的數據怎么沒了? 使用Redis的同學你要明白一點,你為什么用Redis?用redis的作用是什么?用redis的好處是什么?凡事多思考一下為什么,多想想背后的原因。 就在不久前有朋友跟我說過&#xf…

學生檔案c語言編程,學生檔案管理問題

/* 一個修改版本 */#include struct student{int num;char name[10];char sex;char address[20];};struct student stu[3] {{000, "li lin", m, "103 beijing road"},{001, "zhang fun", m, "130 shanghai road"},{002, "wang …

從思維圖到基礎再到深入,java空間查詢

螞蟻金服一面: 先自我介紹,講講自己基礎掌握情況,以及項目經歷平時會用到哪些數據結構?鏈表和數組的優缺點?解決hash沖突的方法有哪些?講講自己對HashMap的理解,以及和Weakhashmap的區別&#…

c語言中如何取消最后一個空格,新人提問:如何將輸出時每行最后一個空格刪除...

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓如何將每行最后一個空格刪除&#xff0c;使矩陣只有數字間有空格&#xff0c;沒有多余空格&#xff1f;#include#includeint main(){int i,j,k,m,n,x,h,y;int a[15][15]{0};while(scanf("%d",&i)){k1;for(n1;n<i;…

從零開始學Java編程!java集合類詳解和使用

目錄 一、冒泡排序 二、選擇排序 三、插入排序 四、快速排序 五、歸并排序 六、希爾排序 七、堆排序 八、基數排序&#xff08;桶排序&#xff09; 九、遞歸 十、鏈表 十一、棧 十二、隊列 十三、二叉樹 最后 由于篇幅有限&#xff0c;這里就不一一羅列了&#xff0c;20道常見…

go語言調用c 的頭文件 so,Golang生成共享庫(shared library)以及Golang生成C可調用的動態庫.so和靜態庫.a...

Golang類似于C的靜態語言&#xff0c;效率也接近于C&#xff0c;如果Golang也可以導出可供C調用的庫&#xff0c;那可以和很多高級語言say goodbye了&#xff0c;goodbye似乎又有點武斷&#xff0c;但至少說&#xff0c;Golang可以做很多事&#xff0c;而且效率優于很多高級語言…

從青銅到王者的路線,java不同系統間數據同步

深耕技術&#xff0c;啃下22個技術點 互聯網行業更新換代非常快&#xff0c;行業常態便是不斷學習&#xff0c;因此這些主流技術你一個都不能落下&#xff01; ①并發編程 Java并發編程是整個Java開發體系中最難以理解&#xff0c;但也是最重要的知識點之一&#xff0c;因此學習…

c語言 大雨 班上多個同學準備,2015年計算機二級考試《C語言》提高練習題(7)

1[單選題] 若有C語言表達式23*47/3&#xff0c;以下選項中敘述正確的執行順序是A.先執行3*4得12&#xff0c;再執行212得14&#xff0c;再執行7/3得2&#xff0c;最后執行142得16B.先執行3*4得12&#xff0c;再執行7/3得2.5&#xff0c;最后執行2122.5得16.5C.先執行7/3得2&…

從青銅到王者的路線,java枚舉類使用場景

一、先來解讀&#xff1a;23種設計模式要點 1.單例模式&#xff08;Singleton Pattern&#xff09; 2.工廠模式 3.抽象工廠模式&#xff08;Abstract Factory Pattern&#xff09; 4.模板方法模式&#xff08;Template Method Pattern&#xff09; 5.建造者模式&#xff08;Bu…

android tag的作用,Android中的Context的作用(2)

ContextImpl關鍵成員和函數/*** Common implementation of Context API, which provides the base* context object for Activity and other application components.*/classContextImplextendsContext {privatefinalstaticString TAG "ContextImpl";privatefinalsta…

企業級項目實戰講解!javamap排序規則

一、服務發布簡介 分布式系統架構下&#xff0c;服務發布是一件很麻煩的事情&#xff0c;特別是在構建自動發布流程和灰度測試的策略兩個核心方面。通常情況下如果不涉及數據層面的灰度流程&#xff0c;服務可以灰度上線&#xff0c;或者滾動上線&#xff0c;這兩種方式很常用…

android頁面設置背景圖片大小,android頁面設置background為圖片后,頁面滑動掉幀問題...

最近接手的一個android項目里面&#xff0c;有個viewpager3個fragment的頁面&#xff0c;就是很常見的可以左右滑動切換頁面的那種布局。接手的時候告訴我&#xff0c;這個頁面有卡頓現象&#xff0c;性能需要優化。一開始覺得是fragment里面做了太多耗時操作的原因&#xff0c…