当前位置:首页 » 编程语言 » 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
就可以了。