編譯器位數
⑴ c語言各類型數據的位數是多少
這個跟系統有關的,你可以通過sizeof各個類型來看位元組數,從而算出位數。具體可以用以下代碼看
#include<stdio.h>
void main()
{
printf("%d\n", sizeof(int));
printf("%d\n", sizeof(long int));
printf("%d\n", sizeof(float));
printf("%d\n", sizeof(double));
}
一般我們用的32位系統是:
類型 位元組數 位數 范圍
int 4 32 -2147483648 ~ 2147483647
long 4 32 同上
float 4 32 -2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38
double 6 64 -2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+308
⑵ 關於編譯器
看來你還沒入門哦,就想寫一個操作系統了
嗯!有志不錯,相信有一天你會成功的。
一般地說寫一個OS你要會一門高級語言(如C++)一門低級語言(如匯編asm)高級語言用來做界面這方面比較容易一點。而低級用來做低層驅動這方面是高級語言所不能相比的。
當然C語言介於兩者之間,也能對硬體編程,但C是16位的程序對於圖形處理不是很好,我個人建議你低級語言用匯編,對硬體編程時沒有那麼抽象,想傳送的數據很清楚知道來去的方面,但要對硬體這方面的知道要了解。還有就是像要懂操作系統原理還要知道怎麼去實踐這些原理這些才是重要的,選擇語言不是難事,給你一個組合吧(C和asm)雖然不能做出XP這種效果來,但這個圖形操作系統還是很的,就看你自己的功夫了。
對於你補充的問題吶,程序的位數好像指CPU的寄存器的位數吧,在386以前的CPU好像一條指令大是16位的(當然有的指令沒這么大,有8位的)在386後的新加的指令中才有32位的,為了使386以後的CPU能使用以前的指令,規定在16位指令加上不同的指令前綴,形成32位指令形式,這里的32指令就是32位程序的指令,而你說的64位程序。。在我所學的指令里沒有64位的指令,但以以前的指令在在64位上運行,也要兼容的問題吧!之所以有64位的CPU所來是指CPU一次處理數據的位數,比如說32的CPU一次能處理32位的數據,而要處理64位的就要分兩次從內存中取數據而佔用匯流排,這樣會使CPU有空閑,而64位的CPU只要一次就行了,所以你理解錯了,
最後一個問題是人家生在那個年代,和人家有遠見,成績不好並不代表實踐不好,理論和實踐是兩回事,理論在好不會實踐也是廢話,所以人家敢做,在實踐中學習,在加上機遇。這個事不是你我能說清的,只能說說個人見解罷了。。
對於計算機硬體的知道只能告訴你這么之了,,大家相互學習,共同進步吧!!
如果你想找資料的話!你把你的郵箱留下,我這有硬體,操作系統,指令這些用於寫操作的資料!!
⑶ sizeof(long)是4還是8的不同是由不同編譯器決定的,還是操作系統的位數,還是電腦的位數,還是C的標准
這個是由編譯器決定的,有的是32位編譯器,有的是64位編譯器,有的是標准C編譯器,有的是C++編譯器,都有可能不同。
⑷ dev C++是多少位的編譯器,,,,
對 windows下的各種編譯器都是32位精讀的。int最大值是21幾幾幾那個十位數。如果要32767 就換成short int就好
⑸ 怎樣用c語言編譯器列出8位數的組合
#include<stdio.h>
voidpm(unsignedintbeg,constunsignedintn)//調用時,beg恆0,n為數字的位數。
{
inti;
staticcharstr[10]={0};
if(beg!=n)
for(i=0;i<10;i++){
str[beg]='0'+i;
pm(beg+1,n);
str[beg]=0;
}
elseputs(str);
}
intmain(intargc,char*argv[])
{
pm(0,5);//示例
pm(0,8);
return0;
}
⑹ C語言數據類型所佔位元組是和運行的機器位數有關還是編譯器有關
1)C語言一般指的是ANSI C的標准,對應的處理器分別是32位和64位的。
2)類型分為內置類型和自定義類型(非內置類型)
內置類型指的是無需聲明就可使用的類型,比如char,double,int等。
自定義類型指的是使用前必須聲明的,如struct StructName{};結構類型,int a[5];數組類型以及enum Color{};枚舉類型等。未經聲明的類型不可使用
3)ANSI C只對內置類型的大小進行了規范:
char |double| folat |int |long int| pointer
64bits 1 8 4 4 8 8
32bits 1 8 4 4 4 4
從上表可以看出,對於前三者,大小是統一的,只有long int 和pointer(指針)在不同的機器上佔用了不同的大小。他們的規則是,long int和pointer的大小等於機器位長(8位一個位元組).最後說明一點,unsigned的關鍵字和類型組合和該類型的大小相同,因為有符號和無符號只對編譯器有效,機器對他一無所知。
⑺ C++ 編譯器自動保留6位有效數字,怎麼輸出所有的位數
看你要求的
是多少,選擇合適的類型保存數據,float精度就是6位小數,想取得更高的精度使用double存儲,不要用float
double
v
=
1.1
*
1.1
*
1.1
*
1.1;
⑻ 怎樣查看自己電腦的編譯器是多少位的
編譯器有好多種,每個語言都有,一般都有-v或者--version命令可以看版本信息,包括生成的代碼對應的機型(target),例如:Target: x86_64-w64-windows-gnu 就是生成64位的x86-64機器碼,編譯時可以靠-m32等命令控制.
至於編譯器本身,那跟你下載時的版本有關,如果你確實需要了解類似GCC本身是多少位的,可以這樣:
linux下:
filexxx#xxx代表程序名
例如:
[cosmia@excalibur~]$filesqlite3.i686sqlite3.x86_64
sqlite3.i686:ELF32-bitLSBexecutable,Intel80386,version1(SYSV),dynamicallylinked(usessharedlibs),forGNU/Linux2.6.32,BuildID[sha1]=,stripped
sqlite3.x86_64:ELF64-bitLSBexecutable,x86-64,version1(SYSV),dynamicallylinked(usessharedlibs),forGNU/Linux2.6.32,BuildID[sha1]=,stripped
windows下:
用7zip打開那個.exe文件,看cpu信息
詳細參考方法:
http://www.hu.com/question/23027723
⑼ C語言 判斷一個輸入得數子是幾位數
判斷一個輸入得數子是幾位數的源代碼如下:
#include<stdio.h>void main()
{
void count();
printf("請輸入一串字元,數字、字母皆可: ");
count();
}
void count()
{
char c[32];
int n=0;
while((c[n]=getchar())!=' ')
{
n++;
}
printf("輸入字元總數為:%d ",n);
printf("反序輸出結果為:");
for(n;n>=0;n--)
{
printf("%c",c[n]);
}
printf(" ");
}
(9)編譯器位數擴展閱讀
1、關鍵字不能用作用戶定義的名稱(標識符)。
2、對於每個開放的brase({),必須有相應的閉合brase(})。
3、必須聲明每個變數bofore使用它。
4、每個C程序都必須編寫此語句。該語句(main)指定C程序執行的起始點。main是一個用戶定義的方法,它告訴編譯器這是程序執行的起點。int是在完成主方法執行後將返回操作系統的值的數據類型。如不想返回任何值,可以將其用作void。
⑽ 如何查看電腦上安裝的visual studio 2010的編譯器的配置是32位還是64位的
指針大小為4就是32位的,為8就是64位的。
工程屬性裡面可以選擇: