還可以自定義數據類型。
分為兩種:一種浮點單精度類型,采用4字節存貯,用float定義
另一種是雙精度類型,采用8字節存貯,用double定義
簡單啊
語句:
switch((int)(x+0.5))
{ case 1: y=a+b*x; break;
case 2: y=a–b*x;break;
case 3: y=a*b*x; break;
case 4: y=a/(b*x);break;
default: printf("x error. \n"); }
改:
int temp = (int)(x + 0.5);
if(temp == 1)
y=a+b*x;
else if(temp ==2)
y=a–b*x;
else if(temp == 3)
y=a*b*x;
else if(temp ==4)
y=a/(b*x);
else
printf("x error. \n");
實型變量存儲的時候計算機是不分正負的,因為他用asc 碼存;
但是你可以用負數,他會轉換成他的補碼進行存儲的
在c語言中的實型變量分為float型和double型,按浮點數進行存儲,分為數符、階碼
和
尾數
幾部分
C語言提供的實型變量有兩種類型:單精度(float)和雙精度(double)。
#include<stdio.h>
int main() {
float x;
double y;
x=123456.789;
y=123456.789;
printf("x=%f\n",x);
printf("y=%f\n",y);
輸出 x=123456.789062 y=123456.789000
分析
從程序運行結果可以看出,x的值并不等于賦予的初值,而y的值等于賦予的初值。這是由不同數據類型變量的有效數字不同產生的差異。因而在需要定義較大的數時,應選取雙精度double型,甚至選取長雙精度long double型,以確保數據的準確性。
在C語言中的實型變量分為2種類型,它們是()和()
float 和double 實型變量
實型變量分為兩類:單精度型和雙精度型,其類型說明符為float 單精度說明符,double 雙精度說明符。在Turbo C中單精度型占4個字節(32位)內存空間,其數值范圍為3.4E-38~3.4E+38,只能提供七位有效數字。雙精度型占8 個字節(64位)內存空間,其數值范圍為1.7E-308~1.7E+308,可提供16位有效數字。
實型變量說明的格式和書寫規則與整型相同。
例如: float x,y; (x,y為單精度實型量)
double a,b,c; (a,b,c為雙精度實型量)
實型常數不分單、雙精度,都按雙精度double型處理。
void main(){
float a;
double b;
a=33333.33333;
b=33333.33333333333333;
printf("%f\n%f\n",a,b);
}
在C語言中,實型變量分為兩種類型,它們是_______________。float類型及double類型
c 語言中實型變量分為哪兩種類型?float和double
在C語言中的實型變量分為float型和double型,按浮點數進行存儲,分為數符、_______和_______幾部分在C語言中的實型變量分為float型和double型,按浮點數進行存儲,分為數符、階碼 和 尾數 幾部分
在C語言中的實型變量分為float型和double型,按浮點數進行存儲,分為數符、_______和尾數幾部分。階碼。用于表示小數點在該數中的位置,它是一個帶符號的整數
C語言中實型變量有分正負嗎?
實型變量!!!!!!
什么是實型變量啊 還把ASCII碼給搬出來了呢 只有字符而且是單字符采用ASCII來編碼來“表示”
double float類型非但是有符號的 而且它們連定義成unsigned double,unsigned float 都是錯誤的!編譯器不會報錯,但輸出結果一定會讓你感到費解的!
C語言中雙精度實型變量與長雙精度實型變量的區別雙精度實型變量與長雙精度實型變量:這個不總是有區別的。
long double的精度不低于double。
早期的VC里面long double就是double的別名。
現代的X86編譯器,double一般是64位浮點數,long double一般是80位浮點數。
對于其他平臺,double和long double有著各種不同的解釋,一般需要類似sizeof來判定究竟long double究竟在所在系統的含義。
在80x86系統中的,80x87本身是一個80位的浮點協處理器,所以一般long double對應的就是80位浮點數,但是有少數系統是128位浮點數或者64位浮點數。double一般都是64位浮點數,通過80x87截斷后面的結果得到。雖然是80位浮點數,但是可能占用10個、12個或者16個字節的存儲空間,這個隨編譯器而不同。
沒財富值,純屬好學,希望中國能夠資源共享啊-》共享的精神應該是你要要積累財富值吧
一般我們說的共享都是雙方向,“有來無往非禮也”。
單方向的那種不是共享的精神。
C語言中為何整型變量以實型變量輸出為0?1、整形數和浮點數在內存中的存儲格式和布局不同(理解浮點數的內存布局和表示方式,請參考::blog.csdn./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]
00405