① c語言,整形數據如果以0開頭
恩,有這個心學習是好的,學C就得鑽鑽這些角。
讓我來給你解釋下吧,這里你定義的是整型,然後你給它的是一個8進制位的數,024,當你輸出它時,是以10進制輸出的,所以最後結果是20,而不是你所說的21.
② 為什麼c語言里浮點型數據按整型格式輸出結果是0
printf("%f", 2) <- 參數"%f"是運行時的,按照規則編譯器是不可能知道你希望第二個參數是浮點數類型,所以也就不可能把int類型的2自動轉換成浮點類型的2。
另外%f需要的是64位的double,現在你只提供了低32位,高32位只能依賴棧里原有的數據。
double類型最高12位小於1003,對應的十進制數就肯定小於0.000001,所以很容易就會輸出0
③ 在C語言中實型怎麼轉化成整形
一、問題分析:你的問題中「實型轉化為整型」其實就是強制類型轉換;
二、概念說明:強制類型轉換是通過類型轉換運算來實現的。其一般形式為: (類型說明符) (表達式) 其功能是把表達式的運算結果強制轉換成類型說明符所表示的類型;
三、應用舉例:
main()
{
floata;
a=3.1415926;
(int)a;//轉換後a=3,而不是3.1415926
}
原本的單精度實型變數a=3.1415926,經過(int)a語句強制轉換為int整形變數後,a=3。
④ C語言怎麼把字元串轉化為整形數字 是-'0'嗎
好吧
我給你看看我的程序吧
#include<stdio.h>
#include<cstring>
int main()
{
char zifu[80];
int shuzi[80];
gets(zifu);//你的gets用對了哦
for(int i=0;i<strlen(zifu);i++)//由於字元數組下表從0開始 所以是0
{//同時strlen(zifu)是zifu數組的字元數量 如果用80會有空字元的哦
shuzi[i]=zifu[i]-'0';//是-'0' 也可以寫成-48
}
for(int i=0;i<strlen(zifu);i++)
printf("%d",shuzi[i]);
return 0;
}
⑤ c語言 整型是什麼意思
C語言中的整形,是計算機中的一個基本專業術語,指沒有小數部分的數據。整型值可以用十進制,十六進制或八進制符號指定,前面可以加上可選的符號(- 或者 +)。如果用八進制符號,數字前必須加上 0(零),用十六進制符號數字前必須加上 0x。
在C語言中,整型包括整型常量和整型變數,整型變數又包括短整型、基本整型、長整型,它們都分為有符號和無符號兩種版本,是一種智能的計算方式。
整型變數的值可以是十進制,八進制,十六進制,但在內存中存儲著是二進制數。變數顧名思義是數值可以變的量,整型變數表示的是整數類型的數據。
(5)c語言實型變整形結果0擴展閱讀:
整型常量分類
1、八進制整常數:必須以0開頭,即以0作為八進制數的前綴。數碼取值為0~7。八進制數通常是無符號數。以下各數是合法的八進制數:
015(十進制為13)0101(十進制為65)0177777(十進制為65535)。
2、十六進制整常數:十六進制整常數的前綴為0X或0x。其數碼取值為0~9,A~F或a~f。以下各數是合法的十六進制整常數:
0X2A(十進制為42)0XA0 (十進制為160)0XFFFF (十進制為65535)。
3、十進制整常數:十進制整常數沒有前綴。其數碼為0~9。以下各數是合法的十進制整常數:
237 -568 65535 1627
在程序中是根據前綴來區分各種進制數的。因此在書寫常數時不要把前綴弄錯造成結果不正確。
整型變數分類
1、基本型
類型說明符為int,根據計算機的內部字長和編譯器的版本,在內存中可能佔2或4個位元組(通常分別在16位機和32位機上),其取值為基本整常數。
2、短整型
類型說明符為short int或short,在內存中佔2個位元組,其取值為短整常數。
3、長整型
類型說明符為long int或long,在內存中佔4個位元組,其取值為長整常數。
4、無符號型
類型說明符為unsigned。它可以單獨使用代表unsigned int,也可以作為前綴,都表示無符號整數,即永遠為非負的整型變數,大於0的數據范圍約擴大為原來的2倍。各種無符號類型量所佔的內存空間位元組數與相應的有符號類型量相同。但由於省去了符號位,故不能表示負數。
⑥ C語言中整型變數用實型輸出以及實型變數用整型輸出結果會怎麼樣
你這里首先一個嚴重問題就是不管什麼環境下變長參數接受float和int的長度都不一樣
你這里看上去是16位的,int是2位元組 float是4位元組
第一個printf 除格式需要6位元組的參數你只提供了4位元組,%f的高2位元組是不缺定的值,所以列印出來的float也是不確定的(當然你每次執行這個程序可能會一樣,但是改一下調用順序就不行了)
第二個要求6個位元組你給了8個位元組,另外第二個printf沒理由是0... 16位下應該是39322
⑦ C語言中為何整型變數以實型變數輸出為0
1、整形數和浮點數在內存中的存儲格式和布局不同(理解浮點數的內存布局和表示方式,請參考:http://blog.csdn.net/songjinshi/article/details/7753777)
2、printf在進行參數入棧時是根據實參的類型進行入棧,而不是根據格式化字元中指定的類型,具體入棧過程如以下所示。所以造成入棧實參的類型和實際函數使用的類型不匹配(關鍵是所佔內存的大小不同),所以在具體的解析中就會出現如題所說的結果,因為整形的內存布局在被解析為浮點數時會非常小,因為整形本來是4個位元組存儲,而被解析為8個位元組的浮點數,所以所得的值會非常小,正如浮點數的的表示:非規格化:當E的二進制位全部為0時,N為非規格化形式。
注意,此時小數點左側的隱含位為0。 為什麼e會等於(1-bias)而不是(-bias),這主要是為規格化數值、非規格化數值之間的平滑過渡設計的。後文我們還會繼續討論。
有了非規格化形式,我們就可以表示0了。把符號位S值1,其餘所有位均置0後,我們得到了 -0.0; 同理,把所有位均置0,則得到 +0.0。非規格化數還有其他用途,比如表示非常接近0的小數,而且這些小數均勻地接近0,稱為「逐漸下溢(graally underflow)」屬性。
下面貼出兩段反匯編代碼,解析參數如何入棧:
printf("%f",45);
00405028 mov esi,esp
0040502A push 2Dh
0040502C push offset _ORDER_SERVER_ADDRESS-0ACh (43F2ACh)
00405031 call dword ptr [__imp__printf (43C124h)]
00405037 add esp,8
printf("%f",d);(d為整形變數)
00405028 mov esi,esp
0040502A mov ecx,dword ptr [d]
0040502D push ecx
0040502E push offset _ORDER_SERVER_ADDRESS-0ACh (43F2ACh)
00405033 call dword ptr [__imp__printf (43C124h)]
00405039 add esp,8
0040503C cmp esi,esp
0040503E call _RTC_CheckEsp (439760h)
double a=5,c;
float b;
int d=0x40a00000,y=6;
int *p;
char s=5;
p=&d;
b=(float)a;
printf("%f,%f,%f,%f,%f,%f,%d",b,c,(float)d,s,(float)s,y,y);
00405028 mov esi,esp
0040502A mov ecx,dword ptr [y]
0040502D push ecx
0040502E mov edx,dword ptr [y]
00405031 push edx
00405032 movsx eax,byte ptr [s]
00405036 mov dword ptr [ebp-34h],eax
00405039 fild dword ptr [ebp-34h]
0040503C sub esp,8
0040503F fstp qword ptr [esp]
00405042 movsx ecx,byte ptr [s]
00405046 push ecx
00405047 fild dword ptr [d]
0040504A sub esp,8
0040504D fstp qword ptr [esp]
00405050 sub esp,8
00405053 fld qword ptr [c]
00405056 fstp qword ptr [esp]
00405059 fld dword ptr [b]
0040505C sub esp,8
0040505F fstp qword ptr [esp]
00405062 push offset _ORDER_SERVER_ADDRESS-0C4h (43F2ACh)
00405067 call dword ptr [__imp__printf (43C124h)]
0040506D add esp,30h
00405070 cmp esi,esp
00405072 call _RTC_CheckEsp (439780h)
⑧ c語言中整型處以整型為何等於0
因為你把結果的數據類型定義成整形了,而剛好結果又是小於零的小數。