① c語言中如何輸出長整型數值
在C/C++中,64為整型一直是一種沒有確定規范的數據類型。現今主流的編譯器中,對64為整型的支持也是標准不一,形態各異。一般來說,64位整型的定義方式有long long和__int64兩種(VC還支持_int64),而輸出到標准輸出方式有printf(「%lld」,a),printf(「%I64d」,a),和cout << a三種方式。
本文討論的是五種常用的C/C++編譯器對64位整型的支持,這五種編譯器分別是gcc(mingw32),g++(mingw32),gcc(linux i386),g++(linux i386),Microsoft Visual C++ 6.0。可惜的是,沒有一種定義和輸出方式組合,同時兼容這五種編譯器。為徹底弄清不同編譯器對64位整型,我寫了程序對它們進行了評測,結果如下表。
上表中,正確指編譯通過,運行完全正確;錯誤指編譯雖然通過,但運行結果有誤;無法編譯指編譯器根本不能編譯完成。觀察上表,我們可以發現以下幾點:
long long定義方式可以用於gcc/g++,不受平台限制,但不能用於VC6.0。
__int64是Win32平台編譯器64位長整型的定義方式,不能用於Linux。
「%lld」用於Linux i386平台編譯器,」%I64d」用於Win32平台編譯器。
cout只能用於C++編譯,在VC6.0中,cout不支持64位長整型。
表中最後一行輸出方式中的printint64()是我自己寫的一個函數,可以看出,它的兼容性要好於其他所有的輸出方式,它是一段這樣的代碼:
CPP
void printint64(long long a)
{
if (a<=100000000)
printf("%d ",a);
else
{
printf("%d",a/100000000);
printf("d ",a0000000);
}
}
這種寫法的本質是把較大的64位整型拆分為兩個32位整型,然後依次輸出,低位的部分要補0。看似很笨的寫法,效果如何?我把它和cout輸出方式做了比較,因為它和cout都是C++支持跨平台的。首先printint64()和cout(不清空緩沖區)的運行結果是完全相同的,不會出現錯誤。我的試驗是分別用兩者輸出1000000個隨機數,實際結果是,printint64()在1.5s內跑完了程序,而cout需要2s。cout要稍慢一些,所以在輸出大量數據時,要盡量避免使用。
② c語言中如何把整型變成長整型
定義的時候就定義為長整型不就行了
③ 關於C語言中長整型數
1.
長整型:有符號整數;滿足sizeof(long)>=sizeof(int),一般32位平台sizeof(long)為4;此外由於sizeof(short)<=sizeof(int),所以sizeof(long)>=sizeof(short)。
2.常量:不能被修改。
常量在c語言中是數值字面量。字面量後綴為l或l,表示long,例如1234l、0l。如果不帶後綴,默認為int字面量而不是long字面量,即不是長整型常量。
④ C語言里怎麼把數字字元串12345轉換為長整型字元12345,只用strlen函數和基本數據運算來編譯函數fun()。
#include<stdio.h>
longfun(char*s);
intmain(void)
{
printf("%ld ",fun("123456"));
return0;
}
longfun(char*s)
{
longsign,n;
for(n=0,sign=1;*s;++s)
{
if(*s=='-')
{
sign=-1;
}
else
{
n=n*10+*s-'0';
}
}
returnsign*n;
}
⑤ 在C語言中實型怎麼轉化成整形
一、問題分析:你的問題中「實型轉化為整型」其實就是強制類型轉換;
二、概念說明:強制類型轉換是通過類型轉換運算來實現的。其一般形式為: (類型說明符) (表達式) 其功能是把表達式的運算結果強制轉換成類型說明符所表示的類型;
三、應用舉例:
main()
{
floata;
a=3.1415926;
(int)a;//轉換後a=3,而不是3.1415926
}
原本的單精度實型變數a=3.1415926,經過(int)a語句強制轉換為int整形變數後,a=3。
⑥ c語言中如何把整型變成長整型
短整型還用表示??默認的!!你隨便定義的常量,變數就是短整型,要是想要精確值高的話,就定義成長整形行了!!
⑦ c語言 把一個數字字元串轉換成長整型 若輸入數字字元串1234轉成長整型1234
把for(i=len-1;i<=0;i--)改成for(i=len-1;i>=0;i--)。
把x+=n*p[i];改成x+=n*(p[i]-'0');。
最好把gets(s);改成scanf("%s",s);。
⑧ C語言字元轉換成整形的方法是什麼
轉換有兩種方法:
第一種用「atoi」的:
#include"stdio.h"
#include"stdlib.h"
#include"conio.h"
voidmain()
{
charstr[1024]={0};
intInterger;
printf("輸入一個數字: ");
scanf("%s",str);
Interger=atoi(str);
printf("轉換為整形:%d ",Interger);
getch();
}
第二種:
#include"stdio.h"
#include"stdlib.h"
#include"conio.h"
voidmain()
{
charstr[1024]={0};
intInterger;
printf("輸入一個數字: ");
scanf("%s",str);
sscanf(str,"%d",&Interger);
printf("轉換為整形:%d ",Interger);
getch();
}
⑨ C語言程序設計題,關於將字元串轉換成長整型數
s[i]是個數字字元,對應的十進制數字不是字元表面值。直接就乘以位數是不對的。
s[i]-'0';才是對應的十進制整數;另外你這編程思維不太好;一個for就夠用了;
⑩ 如何將短整型變數轉為長整型變數 C語言分類
雙目運算的話,除了賦值以外,直接跟long混合計算就行了,有自動類型轉換機制會自動擴充類型。
願意的話,強制類型轉換也行。例如
shoet a;
(long)a就可以把a中的數據轉換成long