Ⅰ C語言整型常量存放在內存中的問題
計算機
是以補碼
形式
存儲數據
的,最高位為
符號
位,0為正,1為負
假設計算機字長為2
位元組
,即16位:
正數的
反碼
、補碼都與
源碼
相同
+3補碼為0000000000000011
-3為
負數
,-3的源碼在+3源碼
基礎
上,最高位符號位變為1,即:1000000000000011
則-3的反碼為:1111111111111100,符號為不變
補碼為反碼+1
則-3的補碼為1111111111111100
+
0000000000000001
=
1111111111111101
Ⅱ C語言中「整型常量」有幾種形式它們是如何表示的
在C語言中,整型常量分為十進制整型常量、八進制整型常量和十六進制整型常量三種表示形式。
1、十進制整型常量
此種格式的整型常量只能出現 0~9 的數字,且可帶正、負號。比如:
0 1 364 28 -34
2、八進制整型常量
此種格式的整型常量以數字0開頭的八進制數字串。其中數字為 0~7。例如:
0111十進制 73、 011十進制 9、 0123十進制 83、
3、十六進制整型常量
此種格式的整型常量以0x或0X(x是大寫)開頭的十六進制數字串。其中每個數字可以是 0~9、a~f或 A~
F 中的數字或英文字母。例如:
0x11十進制 17、 0Xa5十進制 165、 0x5a十進制 90、
Ⅲ C語言中整型常量有幾種形式,它們是如何表示的
在C語言中,整型常量有三種書寫形式:
(1) 十進制整數。十進制整數就是通常整數的寫法。例如:11、15、21等。
(2) 八進制整數。八進制整數的書寫形式是在通常八進制整數的前面加一個數字0。例如:00、0111、015、021等,它們分別表示十進制整數:0、73、13、17
(3) 十六進制整數。十六進制整數的書寫形式是在通常十六進制整數的前面加0x。例如:0x0、0x111、0x15、0x21等,它們分別表示十進制整數0、273、21、33。
注意,整型常量前面沒有+或者-,-10其實是一元-運算符和操作數10,同樣整型常量的十進製表示並沒有0,單獨寫一個0其實是一個八進制常量。
(3)整型常量的源碼擴展閱讀
轉換為整型
要明示地將一個值轉換為 integer,用 (int) 或 (integer)強制轉換。不過大多數情況下都不需要強制轉換,因為當運算符,函數或流程式控制制需要一個 integer 參數時,值會自動轉換。您還可以通過函數 intval() 來將一個值轉換成整型。
1、從布爾值轉換
FALSE 將產生出0(零),TRUE 將產生出1(壹)。
2、從浮點數轉換
當從浮點數轉換成整數時,數字將被取整(丟棄小數位)。
注意:如果浮點數超出了整數范圍(通常為 +/- 2.15e+9 = 2^31),則結果不確定,因為沒有足夠的精度使浮點數給出一個確切的整數結果。在此情況下沒有警告,甚至沒有任何通知!
註:在 Linux 下返回結果是最小負數(-214748),而在 Windows 下返回結果是零(0)。
【以下以C/C++語言為例,陳述一下整型的知識】:
a、C/C++對整型長度的規定是為了執行效率,將int定義為機器字長可以取得最大的執行速度;
b、C/C++中整型包括:int,char和enum,C++中還包含bool類型,C99中bool是一個宏,實際為_Bool;
c、C和C++對enum的規定有所不同,這里不描述;
d、修飾整型正負的有signed和unsigned,對於int默認為signed;
e、修飾 int 大小的有short和long,部分編譯器還擴展了一些更長的整型,比如long long和__int64, C99中增加了long long和unsigned long long;
f、int 的長度與機器字長相同,16位的編譯器上int長16位,32位的編譯器上int長32位;
g、short int的長度小於等於int 的長度,注意它們可能長度相等,這取決於編譯器;
h、long int 的長度大於等於int 的長度,注意它們可能長度相等,這取決於編譯器;
i、char 的長度應當可以包容得下一個字元,大部分系統中就是一個位元組,而有的系統中可能是4個位元組,因為這些系統中一個字元需要四個位元組來描述;
j、char 的正負取決於編譯器,而編譯器的決定取決於操作系統,在不同的編譯器中char可能等同於signed char,也可能等同於unsigned char。
參考資料來源:網路-整型
參考資料來源:網路-整型常量
Ⅳ C語言中,整型常量和長整型常量,有什麼區別
一、指代不同
1、整型常量:是通常的整數,包括正整數、負整數和0,其數據類型顯然是整型。
2、長整型常量:的數值范圍最小是十進制的 -2147483647 ~ +2147483647,在計算機中最少佔用4個位元組。
二、書寫方式不同
1、整型常量:整型常量前面沒有+或者-,-10其實是一元-運算符和操作數10,同樣整型常量的十進製表示並沒有0,單獨寫一個0其實是一個八進制常量。
2、長整型常量:書寫方法也分為十進制、八進制和十六進制整數三種,唯一不同的是在整數的末尾要加上小寫字母「l」或者大寫字母「L」。
三、內存存儲不同
1、整型常量:整型常量內存大小和數值范圍取決於編譯器。
2、長整型常量:位元組長度跟操作系統和編譯器有關,long int長度至少32位,而64位類Unix系統為64位。
Ⅳ C語言中什麼是整型常量
整形常量表達式指的是表達式中的操作數都是整數類型的, 這里的整數類型不僅僅是int類型, 還包括char, (unsigned) short, (unsigned) long等類型. 整型常量表達式中的操作數在編譯時就已經確定了他的值, 因此只需要關注哪些值在編譯時確定就可以了. 這包括以下幾種情況:
1.
單個字元, 比如'A', 'a'
2.
單個整數數字以及由整數數字構成的表達式, 如123, 123 + 345
3.
枚舉常量
4.
有sizeof 運演算法返回的值, 如sizeof(int)
5.
NULL指針值
6.
地址常量. 如0X12345678, 以及地址常量加上一個偏移
在C90和C++中, 靜態數組定義時, 需要提供整形常量表達式. 如int A[10];因此, 你可以簡單的試試用一個表達式去定義一個數組, 如果數組可以正常定義, 這表明這是一個整形表達式.
另外, 在C中, const關鍵字並不是代表其所修飾的變數是常量. 他僅僅代表const 修飾的變數是read-only的, 無法對他進行修改. 這點與C++不同, C++中const關鍵字可以定義一個整形常量, 因此
const int size = 10;
int array[size]; /* C語言中, 編譯不通過, C++中可以通過 */
Ⅵ 整型常量是什麼
整型常量分為十進制整型常量、八進制整型常量和十六進制整型常量三
種表示形式。
(1)十進制整型常量
這種常量只能出現 0~9 的數字,且可帶正、負號。例如:
0 1 364 28 -34
(2)八進制整型常量
這種常量是以數字 0 開頭的八進制數字串。其中數字為 0~7。例如:
0111(十進制 73) 011(十進制 9) 0123(十進制 83)
(3)十六進制整型常量
這種常量是以 0x或 0X開頭的十六進制數字串。其中每個數字可以是 0~9、a~f或 A~
F 中的數字或英文字母。例如:
0x11(十進制 17) 0Xa5(十進制 165) 0x5a(十進制 90)
Ⅶ 什麼是C語言整型常量
整型常量..即整常數..有10進制數 如:123,-345
8進制數 以0開頭的
還有16進制數 以0x開頭的..
Ⅷ C語言源代碼中怎樣區分變數和常量
C語言基礎知識常量和變數分類:C/C++
1.常 量: 程序執行過程中,值不變的量。 3 ,\'a\'
變 量:值可以改變的量。
一個變數有一個名字,在內存中有一定的存儲單元,存放變數的值。
2.常量類型:
a.整 型:12,0,-3
b.實 型:4.6,-1.2
c.字 符 型: \'a\',\'d\'
d.符號常量: #define PRICE 30 (PRICE不能再被賦值且要大寫)
3.變 量: 先定義,後使用。一個變數只能被指定為一確定類型。
4.標識符:標識變數名,符號常量名,函數名,數組名,類型名,文件名的有效字元數列。
a.由字母、數字、下劃線三種字元組成,第一個字元必須為字母或下劃線。
b.大寫字母、小寫字母被認為是兩個不同的字元。
c.長度一般小於8個。
數據類型
一.整 型:
1.整型常量
a.十 進 制:12,-3,0
b.八 進 制:以0開頭。
c.十六進制:以0x開頭。
2.整型變數
a. int -32768——32767
b. short int -32768——32767
c. long int
d. unsigned int 0——65535
e. unsigned short 0——65535
f. unsigned long
int、short int、long int 第一位為符號位 0000001 (0為正,1為負)
unsigned 第一位不是符號位 0000001
所以int型和unsigned型的000001不是同一個值。
二.實 型:
1.實型常量:
a.十進制數:數字和小數點組成。0.12,.12,12.0,0.0
b.指 數:e之前必須有數字,e後面必須為整數。12e3
2.實型變數:
a.單精度:float 7位有效數字 111111.1可,111111.11不可。
b.雙精度:double 15—16位有效數字 。
三.字元型:
1.字元常量:
a. \'a\' , \'x\' , \'*\' ,\'$\' 。
b. 轉義字元:『\\n\'換。 \'\\t\'從第九列開始。\'\\r\'回車。 \'\\b\'退一格。
2.字元變數:
char char=\'a\' 一個字元變數在內存佔一個位元組。
。將一個字元常量放到一個字元變數中,並不是把該字元本身放到內存單元中去,而是將該字元的ASC碼
放到存儲單元中,所以字元型數據和整型數據之間可以通用。一個字元型數據既可以以字元形式輸出,
又可以以整數形式輸出。
四.字元串常量:
"how are you", "a","&12"
。不能把一個字元串賦給一個字元變數。 char c=\'a\'對,char c="how" 錯。
。\'a\' :在內存中存a。
「a」:在內存中存a\\0。
『\\0』是C語言中判斷字元串是否結束的標志。
變數賦初值
a. int a=3;
float f=7.2;
char c=\'a\';
b. int a,b,c=5;
相當於 int a,b,c;
c=5;
c. int a=3;b=3;c=3; 不可寫: int a=b=c=3;
各類數值型數據間的混合運算
整型、實型、字元型數據可以混合運算:10+\'a\'+1.5-8765.4321*\'b\'
double<--float
long
unsigned
int <--char,shot
float型轉晃?double型
char型,shot型轉換為 int型
int型 轉換為double型 等等
算術運算符和算術表達式
1.基本算術運算符
+ 加
- 減
* 乘
/ 除 5/3=1
% 摸(MOD) 5%3=2
2.強制類型轉換運算符:將一個表達式轉換成所需類型
(類型名)(表達式)
(double)a 將a轉換為double型
(int)(x+y) 將x+y轉換為int型
(float)(5%3) 將5%3轉換為float型
putchar函數:輸出一個字元
#include "stdio.h"
a. char a;
a=\'C\';
putchar(a);
b. putchar(\'\\n\');
c. putchar(\'\\102\');
getchar函數:輸入一個字元
#include "stdio.h"
a. char c;
c=getchar();
putchar(c);
b. putchar(getchar());
c. printf("%c",getchar());
putchar函數:輸出若干個任意類型的數據
a. printf("%d,%d",a,b);
b. printf("a=%d b=%d",a,b);
1.d 輸出十進制整數
a. %d:
b.%md: 指定輸出的寬度。數據位數小於m,左端補空格;大於m,按實際位數輸出。
a=123;b=12345;
printf("%4d,%4d",a,b);
輸出結果為:_123,12345
c.%ld: 輸出長整型數據。
long a=123456;
printf("%ld",a); 用%d,錯。
printf("%9ld",a); 輸出結果為:___123456
2. o 輸出八進制數
3. x 輸出十六進制數
4. u 輸出unsigned型數據
5. c 輸出一個字元
6. s 輸出一個字元串
a.%s printf("%s"."how");
b.%ms
c.%-ms
d.%m.ns
e.%-m.ns
7. f 以小數形式輸出實數
a.%f
b.%m.nf
c.%-m.nf
8. e 以指數形式輸出實數
a.%e
b.%m.ne
c.%-m.ne
scanf函數:輸入任意類型的多個數據
scanf("%d%d%d",&a,&b,&c); &a指a在內存中的地址。
——按a,b,c在內存的地址將a,b,c的值存入。
if語句
1. if (A) B;
如果條件A滿足,執行B,否則執行下一句。
2. if (A) B
else C;
如果條件A滿足,執行B,否則執行C。
3. if (A)
if (B) C
else D;
else
if (F) H
else K;
輸入三個數,按小到大輸出。
main()
{ float a,b,c,t;
scanf("%f,%f,%f",&a,&b.&c); 4 2 1
if (a>b)
{t=a;a=b;b=t;} 2 4 1
if (a>c)
{t=a;a=c;c=t} 1 4 2
if (b>c)
{t=b;b=c;c=t;} 1 2 4
printf("%f,%f,%f",a,b.c);
}
switch 語句
switch(a)
{
case A : B; break;
case C : D; break;
default : F; break;
}
如果變數a=A,執行B;執行break語句,跳出swith語句。如果沒有break語句,D,F語句也會執行。
如果變數a=C,執行B;其它情況執行F。
while 語句
while(A)
{
B;
}
如果條件A滿足,執行B,否則執行下一句。(先判斷,後執行。)
while(i<-5)
{
s=s+1;
i++;
}
如果i=1,則不滿足i<-5,執行下一句。i值不變。
do-while 語句
do
{
A;
}
while(B);
先執行A,再判斷B;如果B滿足,再執行A,否則執行下一句。(先執行,後判斷)
do
{
s=s+1;
i++;
}
while(i<-5);
如果i=1,執行i++,i=4;不滿足i<-5,執行下一句。
for 語句
for( A ; B ; C ) D;
A:為變數賦初值;
判斷是否滿足條件B;滿足則執行D再執行C再判斷B;
不滿足則執行下一句。
for(i=1;i<=5;i++) s=s+1;
for(i=1,s=0;i<=5;i++) s=s+1;
for( ;i<=5;i++) s=s+1;
for( ;i<=5; ) { s=s+1; i++;}
break 語句
break 語句:終止循環。用於循環語句,switch語句。
while(A)
{
if (B) C; break;
......
}
執行break語句,跳出循環,執行後面的語句。
continue 語句
continue 語句:只結束本次循環,而不是終止整個循環。
while(A)
{
if (B) C; continue;
......
}
執行break語句,跳出循環,再判斷A,繼續執行循環。
Ⅸ 什麼是整型常量
按你的描述應該是這個意思,比如一個整型常量3412,他代表一個數,現在要把它轉換成字元串"3412",這個是個字元串,由字元'3','4','1','2'組成的。
ps:
數字3是個整型常量,而'3'是個字元常量,他對應的ascii碼是33H