c語言裡輸入和定義的資料型別可以不同嗎

2022-11-10 01:25:08 字數 6400 閱讀 3348

1樓:唔知吳魏

有些型別可以相容,比如可以把int型賦值給double型,但是反過來就會有精度上的損失

2樓:匿名使用者

可以,有些會自動轉換型別的

為什麼c語言中scnaf的輸入的資料型別必須和定義的相同,而printf可以不同?

3樓:哭暴殺

彙編?你注意到了那個&(取地址符號)了嗎,他會將你輸入的東西存到那個地址裡面,如果資料型別不匹配的話會產生錯誤的。

這些東西到指標就會學到,在往回你可以嘗試看看scanf函式中的**是如何的就明白了。

剛開始學c語言的時候,常常會有各種各樣的問題,但是其實這些問題都會在以後漸漸清晰。

程式設計需要不求甚解,囫圇吞棗,可以鑽牛角尖,但是千萬別死鑽。

在c語言scanf 語句中輸入控制符必須和變數的資料型別保持一致嗎?

4樓:

必須保持一致,否則統統出錯,函式立即返回已成功接收併為對應變數賦值的個數,對後續的變數列表不再理會。

5樓:gta小雞

scanf讀取的變數型別必須和格式定義符一致,否則會導致讀入失敗,甚至程式死迴圈。

printf傳入的變數型別不一定和控制符型別一致。例如,若傳入的是字元,而使用%d輸出,則將輸出該字元的ascii值。其他情況更復雜一些。

若定義double i=2.1並傳入到printf,採用%d輸出,將以有符號整型輸出i的低32位的值。最終結果是-858993459。

6樓:匿名使用者

沒錯,是的

~~~~~~

c語言中定義變數的資料型別(比如:int,char)有什麼區別?

7樓:

1: 一個 int 型變數佔用兩個位元組記憶體,也就是16bit;

一個 char 型變數佔用一個位元組記憶體,也就是8bit;

如果的宣告變數時沒有在「int」或「char」前加儲存型別說明符,則編譯器就會將變數預設為auto變數,這種變數會被放在執行記憶體裡,至於怎麼放這就是c編譯器決定的,而且各個公司出的c編譯器的處理規則是會有一些不一樣的。

2:變數型別不同對源程式檔案大小沒什麼影響,但會對程式執行有影響;如果在8位微控制器上,則int型別的資料處理速度會慢很多;如果你要存入的數會大於255,則使用 char 型就會發生溢位,使程式執行發生錯誤;

具體用哪一種,主要還是看你要存入的什麼型別的資料。

c51的資料型別和c語言的資料型別的區別?

8樓:

c語言規定了資料型別一般是什麼樣的。但沒有具體規定這個型別是多長……

而c51指的是具體的一個環境下的編譯執行環境,他一般會具體指出每個資料型別的特徵……

9樓:匿名使用者

你所謂的c51是啥東西?如果是微控制器的話那我告訴你,c語言資料型別的支援c51的,並沒有

才51的資料和c語言的資料型別的區別

10樓:

你是說,int char這些麼?

好久沒寫51程式,都忘記了。你可以sizeof一下,可能長度不一樣,int可能是1或2或4。

11樓:匿名使用者

i donnot know...

c語言。想使用圖中的方法,來顯示出資料型別錯誤時所鍵入的資料,但是為什麼鍵入和顯示的結果不一樣呢? 10

12樓:月光下的

您好,很高興回答您的問題。

您的程式中定義的birthyear是整型變數,但是您輸入的是3.14,所以肯定不滿足要求哦。

以上就是我的回答,希望能幫助到您。

c語言定義了自變數的型別之後,在輸入一個不是該型別的資料給它 ,那麼系統會怎麼處理呢?

13樓:風若遠去何人留

如果可以相容 那麼會相容處理

比如 定義short型別,輸入一個int範圍的,比如1234566 會全部讀入,溢位部分捨去

如果不能相容, 比如 定義int輸入,但出現了英文字母,這時會返回錯誤,同時不對該資料賦值。

14樓:匿名使用者

很簡單:如下

function b=amplify(a)b=a*10;

要點:該方法是使用m檔案定義函式,也就是說一個函式儲存成一個.m檔案,且檔名與函式名相同,那麼當呼叫函式時,會自動執行該m檔案。

函式定義形式

function =funcname()

語句。就是說如果有多個輸出變數則使用[ ]約束,互相之間以逗號隔開,輸入變數以()約束,同樣以逗號隔開。若只有一個輸出則可以省去。

函式體部分就像普通matlab語句寫就行了,不必像c語言那樣使用return語句來表示返回值,只要函式體中與函式左邊變數名相同就是返回值。

c語言的資料型別分為幾種?

15樓:靠名真tm難起

short、int、long、char、float、double這六個關鍵字代表c 語言裡的六種基本資料型別。

在不同的系統上,這些型別佔據的位元組長度是不同的:

在32位的系統上

short

佔據的記憶體大小是2 個byte;

int佔據的記憶體大小是4

個byte;

long佔據的記憶體大小是4

個byte;

float佔據的記憶體大小是4

個byte;

double佔據的記憶體大小是8

個byte;

char佔據的記憶體大小是1

個byte。

具體可以用sizeof測試一下即可。

16樓:哇哎西西

c語言的基本資料型別為:整型、字元型、實數型。

這些型別按其在計算機中的儲存方式可被分為兩個系列,即整數(integer)型別和浮點數(floating-point)型別。

這三種型別之下分別是:short、int、long、char、float、double 這六個關鍵字再加上兩個符號說明符signed和unsigned就基本表示了c語言的最常用的資料型別。

下面列出了在32位作業系統下 常見編譯器下的資料型別大小及表示的資料範圍:

17樓:匿名使用者

資料型別包含兩方面的內容:資料的

表示和對資料加工的操作。資料的全部可能表示構成資料型別的值的集合。資料全部合理的操作構成資料型別的操作集合。

在c語言中,把整型、實型和字元型稱為基本資料型別,又稱整型和實型為數值型。為了描述更復雜的資料結構,c語言還有構造型別、指標型別、放舉型別和空型別。構造型別是指由若干個相關的資料組合在一起形成的一種複雜資料型別。

1.整型

整型資料按其儲存在記憶體中的二進位資訊的最高位是當作數值資訊位還是當作資料的符號位,將整型資料分成帶符號整型和無符號整型兩種。每種整型又按所需的位元組個數的多少分成三種。所以整型共有6種:

帶符號整型(int)、帶符號短整型(short int)、帶符號長整型(long int,或 long)、無符號整型(unsigned int)、無符號短整型(unsigned short int)以無符號長整型(unsigned long)。

2.實型

實型資料有表示範圍和精度兩個不同的特徵,為了適應數的範圍和精度的不同要求,實型資料分三種型別:單精度型(也稱浮點型 float)、雙精度型(double)、長雙精度型(long double)。

3.構造型別

構造型別是指由若干個相關的資料組合在一起形成的一種複雜資料型別,構造資料型別的成分資料可以是基本資料型別的,也可以是別的構造型別的。按構造方式和構造要求區分,構造型別主要有陣列型別、結構型別和共用型別。陣列型別是由相同型別的資料組成;結構型別可以由不同型別的資料組成;當不同資料型別不會同時使用時,以節約記憶體,讓不同資料佔用同一區域,這就是共用型別。

4.指標型別

指標型別是取程式物件(如變數)在記憶體中佔居的地址為值的一種特殊的資料型別。

5.列舉型別

當變數只取很少幾種可能的值,並分別用識別符號對值命名時,這種變數的資料型別可用列舉型別來表示。如變數表示一個星期中的某一天,就可用校舉型別描述該變數的型別,並以星期見的英文名對日期命名,對應的變數取某日的星期名稱為其值。

6.void型別

用保留字void表示的資料型別有兩種完全相反的意思,或表示沒有資料(沒有結果、沒有形式引數),或表示某種任意型別的資料(如又與指標結合,用 void。標記)。 void表示空型別,void。

表示任意資料的指標型別,程式如要使用 void。型別的資料,應該將它強制地轉換成某種具體的指標型別。

2.2 常量

常量是指程式執行過程中其值不可改變的資料。常量按其值的表現形式可分為如下型別:整型常量、實型常量、字元型常量、字串常量和指標常量。

1.整型常量

c語言整型常量的書寫形式有三種:

(1)十進位制整數。通常整數的寫法,如0,123,-45,+25。

(2)八進位制整數。以數字符0開頭並由數字符0-7組成的數字符序列,為八進位制整數。如 0123表示八進位制整數,其值等於十進位制整數 l*8*8+2*8+3=83。

(3)十六進位制整數。十六進位制整數以ox(或ox)開頭的整數。表示十六進位制數的數字將有16個,它們分別是0-9和a、b、c、d、e、f,其中六個英文字母也可以小寫。

例如,0x123表示十六進位制整數,其值等於十進位制整數1*16*16+2*16+3=291; oxabc,其值等於10*16*16+11+16+12=2748。

整型常量也可在整數之後接上字母l(或l),特別指明它是 long型的。

整型常量也可在整數之後接上字母u(或u),特別指明是不帶符號的,即是unsigned型的。為指明不帶符號的long型整型常量,則需在整數之後同時加上字母u和l,表明該整型常量是unsigned long型的。

整型資料以二進位制形式存放,要求短整型資料的位元組數不能大於整型資料的位元組數;整型資料的位元組數不能大於長整型資料的位元組數。對於帶符號的整數,用二進位制**的最左二進位作為數的符號,1表示負數,0表示正數。

2.實型常量

c語言實型常量的一般書寫格式是:

正負號 整數部分.小數部分 指數部分

其中,正負號可有可無,無正負號即為正實數;整數部分和小數部分都是十進數字符序列;指數部分是e(或e)後接上正負號(正號可有可無)和十進數字符序列。

按上述格式書寫實型常量,另有兩條限制:

(l)整數部分和小數部分可以任選,但不可同時都沒有。

(2)小數點和指數部分不可以同時都沒有。

ansic引入兩個字尾字元,用 f標識 float型實型常量,用 1(或 l)標識 fong double型實型常量,而無字尾符的實型常量被認為是double型的實型常量。

要注意實型常量的有效位數,不要以為寫上的數字都能被計算機所接受。在大多數c系統中,一個float型實型資料在記憶體中佔用4個位元組(32個二進位),約7個十進位有效數字,能表示絕對值最接近0的實數約為10的-38次方,最大的實數約為10的38次方。例如,對於** float x=123456.

123f,在大多數系統中,實型常量123456.123f的最後兩位數字是無效的。

double型實型資料佔用8個位元組(64個二進位),約15個十進位有效數字,能表示絕對值最接近0的實數約為10的一308次方,最大的實數約為10的308次方。

3.字元常量

字元型資料用於表示一個字元值,但字元型資料的內部表示是字元的ascll**(8位二進位的二進位制形式)。字元型資料的型別符用char來標記。字元型常量的書寫方法:

(l)普通字元--用單引號括起一個字元。如』a』、』b』、』b』、』$』。

(2)特殊字元--用』\字元或字元列採標記。這種標記方法有三種:

』\特定字元』,標記特定控制符,如換行符用』\ n』來標記。

』\ 1至3個人進位制數字』,以人進數表示字元的ascll**。

』\ x1至2個十六進位制數字符』,以十六進位制數表示字元的 ascll**。

由於字元以**存放,所以也可把字元值當作一個小整數。反之,一個小整數也可把它理解為是某個字元的**,把它當作一個字元。

4.字串常量

字串常量用來表示一個字元序列,它的書寫方法用雙引號括住字元序列。例如:」abc」、」」等。

字串常量「」是一個空字串,即不含任何有效字元的字串。字串資料順序儲存字串字元的ascll**,並在最後字元後面儲存一個h進位制**全為0的特殊字元,用來標記字串的結束。所以字串常量「1234」在記憶體佔5個位元組,而空字串只佔一個位元組。

字串中的字元也可以是轉義字元。

5.符號常量

為了提高程式的可讀性,常量可以用以下形式命名:

# define 識別符號 常量

其中的識別符號也稱作符號常量,這裡的常量是前面所述的某種常量、或是程式中前面定義的符號常量。例如:

# define maxn 100

c語言裡面能輸入中文內容的資料型別是什么

好像不能這樣輸出得用wsprintf把字串轉換下 include int main c語言中,如果要輸入一箇中文字元,應該定義一個什麼型別的變數呢?很急的,謝謝各位大神 include stdio.h void main char s 3 scanf s s printf n 1 2 3 10 s ...

C語言不同資料型別怎麼轉換成同一資料型別的

大概有三種bai 情況 1.表示式du中有幾種可計算zhi 型別時,自動向dao 高 看齊,即自動把位數回少的型別通答過填加無效0而達到表示式中位數最多的型別,計算結果也是 高 型別。這種轉換不需程式設計師干預,也不損失資料。2.通過賦值自動轉換,即自動將右邊表示式計算結果的型別轉換為表示式左邊變數...

C語言中基本資料型別包括哪些

c 語言的基本資料型別有如下四種 整型,說明符為int 字元型,說明符為char 浮點型 又稱實型 說明符為float 單精度 double 雙精度 空值型,說明符為void,用於函式和指標。為了滿足各種情況的需要,除了void型外,上述的三種型別前面還可以加上修飾符改變原來的含義。signed 表...