C語言中型別強制轉換什麼意思?通俗點怎麼解釋,不要定義

2021-03-11 08:13:17 字數 3117 閱讀 8745

1樓:匿名使用者

型別轉換嘛bai

,很容易理du解的啦。

型別轉換分zhi

兩種,一種

dao是水到渠成的轉換,內這種轉換沒有容任何錯誤,不會損失精度(比如1.23 不會變成1.2)、不會超出值域,是不帶強制性的,這種轉換是不用強制指定的,程式會自動完成,反正也不會對你的數字產生任何不好的影響。

(就像小孩子希望自己馬上長大,然後作為一個神,你就立馬實現了他的願望,反正他將來一定會混成這逼樣的。。。)

另一種轉換是會產生不好的影響的,換句話說,也就是需要付出一些代價的,比如精度,你把要3.1415926535897936轉成成單精度的浮點數,他就會成為3.141592,然後後面的精度就沒有了,這是精度的損失。

還有就是值域的損失,你把一個int值給一個short,int值有4個位元組,short只有2個位元組,後者壓根就表示不了那麼大的數字,所以就只能截斷取數字了。這兩種損失都會對程式產生可能的負面影響,所以需要強制執行。

2樓:匿名使用者

接受一個數,返回一個數,但返回的數和原數具有不同的型別——所以可以有不同的運算規則

3樓:季末—楓

強制:就是把是需要的型別轉為需要的型別。例如

4樓:匿名使用者

假如你一開始定義了一個float,實型資料,但你想輸出一個整型的,就可以強制轉換

#include

void main()

這樣輸回出的就是1,否則是1.000000。

不管定答義1點幾,輸出都是1

5樓:匿名使用者

就是抄程式設計人員自覺地將一個a型別的資料顯示轉化成b型別的資料.如下面**:

int a, b;

float c = 12.3;

a = c;

b = (int)c;

結果是a與b的值都是12.其中,**a=c是隱式轉換,就是編譯器發現型別不匹配自動給轉的.

而b = (int)c就是強制型別轉換.

一般而言,型別轉換有精度損失或者記憶體大小不匹配問題,編譯器通常會報警告.而使用強制型別轉換時,程式設計人員通過這種方式告訴編譯器,這種轉換造成的問題我已知道,你不用警告我了.

c語言:預處理是什麼意思?就是看不懂這句話的解釋!越具體越好,也可以通俗一點!

6樓:水晶葡萄

預處理,再編譯前需要做的工作。預處理主要處理兩部分東西,標頭檔案和巨集。

對於標頭檔案,做操作。比如再某個.c中include了一個標頭檔案,這一行預處理時就會被替換為標頭檔案的內容。

對於巨集,比如你define了一個巨集。這裡就會把程式裡面所有用到這個巨集的地方替換掉。當然巨集還有其他操作,但是它們都是再預處理階段就被處理了的

7樓:匿名使用者

第十一章 預處理概述

在前面各章中,已多次使用過以「#」號開頭的預處理命令。如包含命令# include,巨集定義命令# define等。在源程式中這些命令都放在函式之外, 而且一般都放在原始檔的前面,它們稱為預處理部分。

  所謂預處理是指在進行編譯的第一遍掃描(詞法掃描和語法分析)之前所作的工作。預處理是c語言的一個重要功能, 它由預處理程式負責完成。當對一個原始檔進行編譯時, 系統將自動引用預處理程式對源程式中的預處理部分作處理, 處理完畢自動進入對源程式的編譯。

  c語言提供了多種預處理功能,如巨集定義、檔案包含、 條件編譯等。合理地使用預處理功能編寫的程式便於閱讀、修改、 移植和除錯,也有利於模組化程式設計。本章介紹常用的幾種預處理功能。

巨集定義在c語言源程式中允許用一個識別符號來表示一個字串, 稱為「巨集」。被定義為「巨集」的識別符號稱為「巨集名」。在編譯預處理時,對程式中所有出現的「巨集名」,都用巨集定義中的字串去代換, 這稱為「巨集代換」或「巨集」。

  巨集定義是由源程式中的巨集定義命令完成的。 巨集代換是由預處理程式自動完成的。在c語言中,「巨集」分為有引數和無引數兩種。

下面分別討論這兩種「巨集」的定義和呼叫。 無參巨集定義

無參巨集的巨集名後不帶引數。其定義的一般形式為: #define 識別符號 字串 其中的「#」表示這是一條預處理命令。

凡是以「#」開頭的均為預處理命令。「define」為巨集定義命令。 「識別符號」為所定義的巨集名。

「字串」可以是常數、表示式、格式串等。在前面介紹過的符號常量的定義就是一種無參巨集定義。 此外,常對程式中反覆使用的表示式進行巨集定義。

例如: # define m (y*y+3*y) 定義m表示式(y*y+3*y)。在編寫源程式時,所有的(y*y+3*y)都可由m代替,而對源程式作編譯時,將先由預處理程式進行巨集代換,即用(y*y+3*y)表示式去置換所有的巨集名m,然後再進行編譯。

#define m (y*y+3*y)

main()

上例程式中首先進行巨集定義,定義m表示式(y*y+3*y),在s= 3*m+4*m+5* m中作了巨集呼叫。在預處理時經巨集後該語句變為:s=3*(y*y+3*y)+4(y*y+3*y)+5(y*y+3*y);但要注意的是,在巨集定義中表示式(y*y+3*y)兩邊的括號不能少。

否則會發生錯誤。

當作以下定義後: #difine m y*y+3*y在巨集時將得到下述語句: s=3*y*y+3*y+4*y*y+3*y+5*y*y+3*y;這相當於; 3y

8樓:匿名使用者

提前說明了的叫預處理比如定義一個變數#define max 1000**中所有的字元 max 就是1000比如#define print printf("ok");**中遇到print字串就是printf函式,輸出ok!預處理就是預先讓編譯系統知道,他的出現會有目的的在變化一不變數時只需要改預處理,所有資料都會改變,程式很容易維護,還有重要的是編譯系統執行預處理其效率高```做事情就是預先準備可能發生將要發生的事情做個總體計劃...

9樓:匿名使用者

baidu.***/view/1334643.htm 先看下前兩個介紹預處理,根據字面意思是預先做的處理在c語言裡包含三個方面1.

巨集定義2.包含檔案3.條件編譯這三個方面在上述網頁中有詳細介紹如有問題,請追問

C語言資料型別的自動轉換和強制轉換有什麼區別

c語言資料型別轉換分自動轉換和強制轉換兩類。自動轉換 自動轉換髮生在不同資料型別的量混合運算時,由編譯系統自動完成。自動轉換遵循以下規則 1.若參與運算量的型別不同,則先轉換成同一型別,然後進行運算。2.轉換按資料長度增加的方向進行,以保證精度不降低。如int型和long型運算時,先把int量轉成l...

C語言中是什麼意思,c語言中的c是什麼意思?

判斷相等的運算子。形式為a b a b可以是任意值或表示式。當a b相等時,a b為真,否則為假。是關係運算子.表示 判斷是否相等的。如 if a b 判斷a與b是否相等,如相等則為真 c語言中 是什麼意思 是關係運算子.表示 判斷是否相等的。如 if a b 判斷a與b是否相等,如相等則為真 因為...

C語言中 是什麼意思,C語言中 和 是什麼意思

c語言中 是複合賦值運算子。複合賦值運算子就是在簡單賦值符 之前加上其它運算子構成,例如 即 a 1 等價於a a 1。的意思就是把左邊的第一個符號移到右邊,其實就是b b c的意思。直接把b c的b 移到右邊,將b的值取出再取出c的值,相加然後賦給b,儲存在b開闢的記憶體空間中,類似的還有,b c...