當前位置:首頁 » 編程語言 » nearc語言
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

nearc語言

發布時間: 2022-07-06 18:22:54

1. c語言的error C141: syntax error near '='

在=附近遇到字元錯誤
這種錯誤一般是你在網上的代碼,中間有非C語言標識符(即不是英文字元)的字元(一般是中文字元)。找到然後刪除即可。
不行就照著原樣重新打一遍代碼,不要復制粘貼。

2. c語言c141:syntax error near ' '怎麼解決

syntax error near ' ',表示在『』這個附近有語法錯誤,你檢查一下這個所在的句子的前後有沒有忘了在語句最後打「;」的情況

3. C語言中一個關於near簡單問題

near、far、huge關鍵字的真正含義是什麼?

這三個關鍵字只能用於修飾函數、全局變數和指針變數,對於非指針類型的局部變數,這些關鍵字沒有實際意義。

這些關鍵字用於修飾函數時,huge的含義與far相同,用於指明該函數的調用方式為far調用方式,即調用時需要一個段值和一個段偏移組成的32bits調用地址,使用far call進行跳轉,跳轉前先壓棧保存當前CS:IP。near修飾函數時,用於指明該函數的調用方式為near調用方式,調用時只需要一個16bits的近地址,即當前CS的段內偏移。

當這三個關鍵字用於修飾指針時,near型指針實質上為16bits的無符號整型數,該整數給出了所指向變數在當前數據段內的偏移地址,也就是說,在使用near型指針定址時實際上是進行如下的定址操作:[DS:指針變數值]。對於far型的指針變數,可以定址1MB地址空間的任意一個地方,far型指針的實質是一個32bits的整型數,高16bits為段值,低16bits為段內偏移,Turbo C中在使用far型指針時,會先將高16bits放入ES寄存器中,然後再進行如下的定址操作:[ES:指針變數低16bits值]。對於hug型的指針變數,與far性指針變數的不同之處在於,在對far型指針變數進行+/++/-/--等操作時,far型指針變數保持段值不變(也就是高16bits),而只對段內偏移進行加減操作,所以會出現段內回繞的現象,而huge型的指針,在進行加減操作時將會自動的改變段值,不會出現段內回繞。所以給人的感覺就是huge指針能比far指針定址更大的內存空間。

4. C語言轉換格式符大全

int printf(const char *format,[argument]);
format 參數輸出的格式,定義格式為:
%[flags][width][.perc] [F|N|h|l]type
規定數據輸出方式,具體如下:
1.type 含義如下:
d 有符號10進制整數
i 有符號10進制整數
o 有符號8進制整數
u 無符號10進制整數
x 無符號的16進制數字,並以小寫abcdef表示
X 無符號的16進制數字,並以大寫ABCDEF表示
F/f 浮點數
E/e 用科學表示格式的浮點數
g 使用%f和%e表示中的總的位數表示最短的來表示浮點數 G 同g格式,但表示為指數
c 單個字元
s 字元串
% 顯示百分號本身
p 顯示一個指針,near指針表示為:XXXX
far 指針表示為:XXXX:YYYY
n 相連參量應是一個指針,其中存放已寫字元的個數
2.flags 規定輸出格式,取值和含義如下:
無 右對齊,左邊填充0和空格
- 左對齊,右邊填充空格
+ 在數字前增加符號 + 或 -
一個空格 只對負數顯示符號
# 當type=c,s,d,i,u時沒有影響
type=o,x,X時,分別在數值前增加'0',"0x","0X"
type=e,E,f時,總是使用小數點
type=g,G時,除了數值為0外總是顯示小數點 3.width 用於控制顯示數值的寬度,取值和含義如下n(n=1,2,3...) 寬度至少為n位,不夠以空格填充
0n(n=1,2,3...) 寬度至少為n位,不夠左邊以0填充 * 格
式列表中,下一個參數還是width 4.prec 用於控制小數點後面的位數,取值和含義如下:
無 按預設精度顯示
0 當type=d,i,o,u,x時,沒有影響
type=e,E,f時,不顯示小數點
n(n=1,2,3...) 當type=e,E,f時表示的最大小數位數
type=其他,表示顯示的最大寬度 .*
格式列表中,下一個參數還是width
5.F|N|h|l 表示指針是否是遠指針或整數是否是長整數
F 遠指針
n 近指針
h短整數或單精度浮點數
l 長整數或雙精度浮點數
1.一般格式
printf(格式控制,輸出表列)
例如:printf("i=%d,ch=%c\n",i,ch);
說明:
(1)「格式控制」是用雙撇號括起來的字元串,也稱「轉換控制字元串」,它包括兩種信息:
①格式說明:由「%」和格式字元組成,它的作用是將輸出的數據轉換為指定的格式輸出。
②普通字元,即需要原樣輸出的字元。
(2)「輸出表列」是需要輸出的一些數據,可以是表達式
(3)printf函數的一般形式可以表示為
printf(參數1,參數2,……,參數n)
功能是將參數2~參數n按參數1給定的格式輸出
2.格式字元(9種)
(1)d(或i)格式符。用來輸出十進制整數,有以下幾種用法:
①%d,按整型數據的實際長度輸出。
②%md,m為指定的輸出欄位的寬度。如果數據的位數小於m,則左端補以空格,若大於m,則按實際位數輸出。
③%ld(%mld 也可),輸出長整型數據。
例如:long a=123456;
printf("%ld",a);
(2)o格式符,以八進制數形式輸出整數。格式:%o,%mo,%lo,%mlo都可。
(3)x(或X)格式符,以十六進制數形式輸出整數。格式:%x,%mx,%lx,%mlx都可。
(4)u格式符,用來輸出unsigned型數據,即無符號數,以十進制數形式輸出。格式:%u,%mu,%lu都可。
參見:li4-3.c/*無符號數據的輸出*/
(5)c格式符,用來輸出一個字元。格式:%c,%mc都可。
(6)s格式符,用來輸出一個字元串。格式:%s,%ms,%-ms,%m.ns,%-m.ns都可。
參見:li4-5.c /*字元串的輸出*/
(7)f格式符,用來輸出實數(包括單、雙精度),以小數形式輸出。格式:%f,%m.nf,%-m.nf都可。
注意:單精度實數的有效位數一般為7位,雙精度為16位。
參見:li4-6.c/*輸出單精度實數時的有效位數*/
li4-7.c/*輸出雙精度實數時的有效位數*/
li4-8.c/*輸出實數時指定小數位數*/
(8)e(或E)格式符,以指數形式輸出實數。格式:%e,%m.ne,%-m.ne都可。
(9)g(或G)格式符,用來輸出實數,它根據數值的大小,自動選f格式或e格式(選擇輸出時占寬度較小的一種)。
3.說明
(1)除了X、E、G(用大寫字母表示)外,其他格式字元必須用小寫字母;
(2)「格式控制」字元串內可以包含轉義字元;
(3)如果想輸出字元「%」,則應該在「格式控制」字元串中用連續兩個%表示,如:
printf("%f%%",1.0/3);
(4)格式字元表參見下表
表4.1 printf格式字元
格式字元 說 明
d,i 以帶符號的十進制形式輸出整數(正數不輸出符號)
o 以八進制無符號形式輸出整數(不輸出前導符0)
x,X 以十六進制無符號形式輸出整數(不輸出前導符0x),用x則輸出十六進制數的a~f時以小寫形式輸出,用X時,則以大寫字母輸出
u 以無符號十進制形式輸出整數
c 以字元形式輸出,只輸出一個字元
s 輸出字元串
f 以小數形式輸出單、雙精度數,隱含輸出6位小數
e,E 以指數形式輸出實數
g,G 選用%f或%e格式中輸出寬度較短的一種格式,不輸出無意義的0
表4.2 printf的附加格式說明字元
字元
說明
字母l
用於長整型整數,可加在格式符d、o、x、u前面
m(代表一個正整數)
數據最小寬度
n(代表一個正整數)
對實數,表示輸出n位小數;對字元串,表示截取的字元個數
-
輸出的數字或字元在域內向左靠

5. C 語言中變數定義為near

這是歷史遺留問題,DOS系統運行於intel的8086/8088這個16位cpu,但這cpu有20條地址匯流排,16位的寄存器就無法直接定址20位的地址,於是搞出來一個段偏移的概念,把1M的內存空間按64K分段, 以段地址+偏移地址的方式實現20位地址。cpu有許多預先設計好的段寄存器,程序運行的時候,存放在數據段寄存器(DS)中的段地址被當作一個預設的段地址,這64K空間就被稱為近程空間(near)。既然有近程空間,那麼就有遠程空間:位於DS段以外的地址空間就叫遠程空間(far)。如果不顯式聲明,默認使用近程空間

unsigned char near variable; //在近程空間(DS段)創建一個變數 variable
unsigned char varible ; //沒有顯式聲明,同樣是near變數

對於unix/linux/windows這些32位操作系統,對內存的操作是線性的,也就沒有near和far的區別了

關於16位段內存的詳細內容,你可以參考8086/8088匯編語言以及16位的C語言系統手冊(比如Turbo C的程序員手冊)

6. C 語言 指針變數的定義問題

指針變數的定義

指針變數有三個屬性:

(1)該指針變數指向的變數的類型。如i_pointer指向的變數i是整型。

(2)該指針變數在內存中佔多少內存單元。如i_pointer占兩個內存單元,稱為「近指針」,用near表示。如果該變數在內存中佔4個內存單元,稱為「遠指針」,用far表示。如果未指定near或far,預設是near。(指針變數在內存中要麼佔2個內存單元,要麼佔4個內存單元)。

(3)該指針變數指向哪一個變數,即該指針變數的值是多少。如i_pointer的值是2000。

指針變數定義的一般形式:

類型標識符 * 標識符

「*」表示定義指針變數

「標識符」是指針變數名

「類型標識符」表示該指針變數所指向的變數類型。

例、

int i,j; /* 定義兩個整型變數 */

int *pointer_1, *pointer_2;

float *pointer_3;

char *pointer_4;

void *pointer_5;

char far *pointer_6;

指針變數的賦值:例、

pointer_1 = &i;

pointer_2 = &j;

注意,指針變數中只能存放地址,不能將一個非地址類型的數據(如常數等)賦給一個指針變數,如:

pointer_1 = 100;

也可以在定義指針變數的同時指定其初值,如、

int a;

int *p = &a;

7. 請問一下C語言中的far和near怎麼用書上好像沒介紹到,,但在別的資料上看到有,請大俠們幫幫忙~!

near指針和far指針?

在DOS下(實模式)地址是分段的,每一段的長度為64K位元組,剛好是16位(二進制的十六位)。
near指針的長度是16位的,所以可指向的地址范圍是64K位元組,通常說near指針的定址范圍是64K。
far指針的長度是32位,含有一個16位的基地址和16位的偏移量,將基地址乘以16後再與偏移量相加,(所以實際上far指針是20位的長度。)即可得到far指針的1M位元組的偏移量。所以far指針的定址范圍是1M位元組,超過了一個段64K的容量。例如一個far指針的段地址為0x7000,偏移量為0x1244,則該指針指向地址0x71224.如果一個far指針的段地址是0x7122,偏移量為0x0004,則該指針也指向地址0x71224。
如果沒有指定一個指針是near或far,那麼默認是near。所以far指針要顯式指定。far指針工作起來要慢一些,因為每次訪問一個far指針時,都要將數據段或程序段的數據交換出來。另外,far指針的運算也比較反常,例如上面講到的far指針指向同一個地址,但是比較的結果卻不相同。

什麼時候使用far指針?

當使用小代碼或小數據存儲模式時,不能編譯一個有很多代碼或數據的程序。因為在64K的一個段中,不能放下所有的代碼與數據。為了解決這個問題,需要指定以far函數或far指針來使用這部分的空間(64K以外的空間)。許多庫函數就是顯式地指定為far函數的形式。far指針通常和farmalloc()這樣的內存分配函數一起使用

8. c語言編程出現syntax error near '}',實在是找不到錯了,大家幫幫忙

write_byte(RomID[n][q])
後面
沒分號,這是其一。
其二:沒見過將while循環的while單獨放後面的,至少我沒看到。
只有do{}while(....),while才放在後面。while放前面,是不需要分號的。do,while循環需要,我想你時少了do
關鍵字了

9. C++ 在這里未定義的宏 near和far是什麼意思啊

這是古老年代的編譯器留下的痕跡。
那時有近調用與遠調用,近調用是64K區域內的調用,超出64K區域的地址就是遠了。每64K叫一個「段」,跨段就是遠。

現在 理解成空就可以了。
要找不到 near, far 加2句:
#define near
#define far
就可以了。