谁知道delphi是用什么开发的?C语言?C++?JAVA?还是什么....?
delphi本身就是一种编程语言,不存在用其他的语言开发,它们都是编程语言
delphi与c语言比较有什么特点?
Delphi面向对象,C语言面向过程;
c语言user *user::load(user *head)解释?
这是一个user类的成员函数,名字为load。其返回类型为user*类型,一个user类的指针,其参数为user*类型user是一个类。::是类域作用符,表示load是user类中的一个成员。
C语言中 using 这个函数表示什么意思?
这是C++的语法表示将某个namspace 的函数、变量或类引入到当前 namespace
sqlite3如何解决操作数据库,文件一直占用,关闭数据库后,文件仍无法删除,c语言调用。
在数据删除后,手动执行VACUUM命令,执行方式很简单sqlite> vacuum;VACUUM命令会清空“空闲列表”,把数据库尺寸压缩到最小。但是要耗费一些时间。FQA里面说,在Linux的环境下,大约0.5秒/M。并且要使用两倍于数据库文件的空间。我憎恨此FQA,他只说系统环境,不说机器硬件环境。我在测试手机上执行用了将近13秒时间压缩了将近3M的空间。至于它所占用的另一部分空间,是生成了一个.db-journal后缀名的临时文件。(这个问题对我现在来说是无所谓的。)
我的C语言学的还行,如果想学编木马程序,我还得学什么有关计算机的知识!
你QQ多少撒?我这里有张图 是关于windows下黑客学习方向的
C语言中val是什么意思
Val 函数 返回包含于字符串内的数字,字符串中是一个适当类型的数值。 语法 Val(string) 必要的 string 参数可以是任何有效的字符串表达式. 说明 Val 函数,在它不能识别为数字的第一个字符上,停止读入字符串。那些被认为是数值的一部分的符号和字符,例如美圆号与逗号,都不能被识别。但是函数可以识别进位制符号 &O(八进制)和 &H(十六进制)。空白、制表符和换行符都从参数中被去掉。 下面的返回值为 1615198: Val(" 1615 198th Street N.E.") 在下面的代码中,Val 为所示的十六进制数值返回十进制数值 -1。 Val("&HFFFF") 注意 Val 函数只会将句点(.)当成一个可用的小数点分隔符。当使用不同的小数点分隔符时,如在国际版应用程序中,代之以 CDbl 来把字符串转换为数字。 "===================================== Val 函数示例 本示例使用 Val 函数返回字符串中所含的数值。 Dim MyValue MyValue = Val("2457") " 返回 2457。 MyValue = Val(" 2 45 7") " 返回 2457。 MyValue = Val("24 and 57") " 返回 24。
C语言中val是定义什么的
要看starttime是什么类型的数据结构,val是starttime的成员变量,具体看starttime定义。
c语言中value什么意思
c语言中value是“值”的意思哦
求一段可运行的基于单片机PIC 32MX795F512L 的C语言代码(流水灯)
你从microchip官网上下一些PIC32的例程就行啦,各种外设接口的例程都有,下面是定时中断的一个例程。在Debug模式下能正常进中断,RD0接口的LED闪烁表示芯片是好的#include <plib.h>// Configuration Bit settings// SYSCLK = 72 MHz (8MHz Crystal/ FPLLIDIV * FPLLMUL / FPLLODIV)// PBCLK = 36 MHz// Primary Osc w/PLL (XT+,HS+,EC+PLL)// WDT OFF// Other options are don"t care//#pragma config FPLLMUL = MUL_18, FPLLIDIV = DIV_2, FPLLODIV = DIV_1, FWDTEN = OFF#pragma config POSCMOD = HS, FNOSC = PRIPLL, FPBDIV = DIV_2// Let compile time pre-processor calculate the PR1 (period)#define FOSC 72E6#define PB_DIV 8#define PRESCALE 256#define TOGGLES_PER_SEC 1#define T1_TICK (FOSC/PB_DIV/PRESCALE/TOGGLES_PER_SEC)int main(void){ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //STEP 1. Configure cache, wait states and peripheral bus clock // Configure the device for maximum performance. // This macro sets flash wait states, PBCLK divider and DRM wait states based on the specified // clock frequency. It also turns on the cache mode if avaialble. // Based on the current frequency, the PBCLK divider will be set at 1:2. This knoweldge // is required to correctly set UART baud rate, timer reload value and other time sensitive // setting. SYSTEMConfigPerformance(FOSC); // Override PBDIV to 1:8 for this timer example mOSCSetPBDIV(OSC_PB_DIV_8); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // STEP 2. configure Timer 1 using internal clock, 1:256 prescale OpenTimer1(T1_ON | T1_SOURCE_INT | T1_PS_1_256, T1_TICK); // set up the timer interrupt with a priority of 2 ConfigIntTimer1(T1_INT_ON | T1_INT_PRIOR_2); // enable multi-vector interrupts INTEnableSystemMultiVectoredInt(); // configure PORTD.RD0 = output mPORTDSetPinsDigitalOut(BIT_0); while(1);} //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // STEP 3. configure the Timer 1 interrupt handlervoid __ISR(_TIMER_1_VECTOR, ipl2) Timer1Handler(void){ // clear the interrupt flag mT1ClearIntFlag(); // .. things to do // .. in this case, toggle the LED mPORTDToggleBits(BIT_0);}
c语言里可以用vector吗?
不能。。。vector 是C++的。。
c语言里可以用vector吗?
C语言不能用vector,但你可以自己写个随机访问ADT或链表ADT
关于JAVA语言,和C语言有什么联系吗?
Java像C++,是完全OO的。没有指针,完全是各种类。
在C语言中的32个关键字具体是哪些?
不知道你问的那个版本的C呀,所以不能具体回答你的问题
关于JAVA语言,和C语言有什么联系吗?
分类: 电脑/网络 >> 程序设计 >> 其他编程语言 解析: Java编程基础 原创:EOC_ZX 2002年10月4日 Java语言由语法规则和类库两部分组成,其中语法规则确定了Java程序的书写规范,学习好语法规则是Java语言,也是所有编程语言的基本功。本文主要向大家简单介绍一下Java的语法规则。 Java语言与C/C++语言有着紧密的联系,Java中的许多术语来自于C++,起语法也来自于C++。因此Java的语法和c++的语法计划一模一样。下面简单介绍一下Java的具体语法。 一、Java的词法1、标识符 标识符是类、变量和方法等的名字,作用是让编译器能够识别它们。在Java语言中,标识符可以包含数字、字母、下划线(_)和美圆符号($),但是不能以数字作为开头。与C/C++语言不同的是,Java语言还可以将一些非拉丁字母包含在标识符中,这是因为Java语言使用的是Unicode字符,所有的十六进制00C0以上的Unicode字符都可以用在标识符中。但是Java语言的关键字是不能用来作为标识符的。 我们在使用标识符的时候应该尽量表达所要表示的类、变量、方法等的含义。另外,标识符中可以使用下划线,我们应该充分利用这一点以提高程序的可读性。 2、关键字 以下是Java的全部关键字: abstract double int strictfp** boolean else interface super break extends long switch byte final native synchronized case finally new this catch float package throw char for private throws class goto* protected transient const* if public try continue implements return void default import short volatile do instanceof static while * 尚未使用的关键字 ** 为Java 2增加的关键字 3、注释 Java有三种形式的注释: 第一种是C语言的传统注释方式,即将“/*”和“*/”之间的文本都视为注释,这种注释可以跨越多行。 第二种是C++风格的注释,即将“”之后直到行尾的文本都视为注释,这种注释只能包含一行。 第三种是Java新增加的注释方式,即将“/**”和“*/”之间的文本都视为注释,这种注释也可以夸耀多行。注意,这种注释方式生成的注释将作为Javadoc文档保存。 二、操作符 1、算术操作符 操作符 用途 优先级 结合性 ++,-- 自动递增,自动递减 2(仅次于括号) 从右到左 +,- 一元加,一元减 2 从右到左 *,/ 乘,除 3 从左到右 % 取余(求模) 3 从左到右 +,- 加,减 4 从左到右 2、布尔运算与关系运算符 操作符 用途 优先级 结合性 >,<,>=,<= 测试相对大小 6 从左到右 == 测试相等性 7 从左到右 != 测试不等性 7 从左到右 ?: 根据第一个操作数返回后两个操作数之一 13 从左到右 ! 非 2 从右到左 & 布尔与 8 从左到右 ^ 异或 9 从左到右 | 布尔或 10 从左到右 && 条件与 11 从左到右 || 条件或 12 从左到右 3、位操作符 操作符 用途 优先级 结合性 ~ 非(位求补) 2 从右到左 <<,>> 左移,右移 5 从左到右 >>> 当作无符号右移 5 从左到右 & 位和 8 从左到右 ^ 位异或 9 从左到右 | 位或 10 从左到右 4、赋值操作符 操作符 用途 优先级 结合性 = 赋值 14 从右到左 *= 操作同时赋值 14 从右到左 /= 操作同时赋值 14 从右到左 %= 操作同时赋值 14 从右到左 += 操作同时赋值 14 从右到左 -= 操作同时赋值 14 从右到左 >>= 操作同时赋值 14 从右到左 <<= 操作同时赋值 14 从右到左 >>>= 操作同时赋值 14 从右到左 ^= 操作同时赋值 14 从右到左 |= 操作同时赋值 14 从右到左 &= 操作同时赋值 14 从右到左 5、特殊操作符 cast操作符将一种数据类型转换成为另一种数据类型,cast应写成把要校正操作数的类型名放在括号中。 例如: int i; long l; l=7876547; i=(int)l; 如果给高精度的变量赋予一个低精度值,则不需校正。类型校正操作符的优先级为2,结合性为从右到左结合。 将以上讲到的操作符的优先级总结如下: 优先级 运算符 结合顺序 1 []数组运算 .点运算符 ()调用方法 从左到右 2 ! ~ ++ -- +(一元加) -(一元减) ()强制类型转换 new 从右到左 3 * / % 从左到右 4 +(二元加) -(二元减) 从左到右 5 >> << >>> 从左到右 6 < <= > >= instanceof 从左到右 7 == != 从左到右 8 & 从左到右 9 ^ 从左到右 10 | 从左到右 11 && 从左到右 12 || 从左到右 13 ?: 从左到右 14 = += -= *= /= %= &= |= ^= <<= >>= >>>= 从右到左 三、常量 1、整型常量 在Java语言中,整型常量有三种形式,它们分别是:十进制、八进制、十六进制。 需要注意的是十进制数不能以0开头,这是因为八进制的数是以0开头的,而十六进制数以0x或0X开头。 2、浮点型常量 浮点数只能表示十进制数。浮点数有两种表示方法,即标准表示法和科学记数法。浮点数又分为单精度数和双精度数。 3、布尔型常量 布尔型常量有两个值:ture(或TURE)和false(或FALSE)它们分别表示真和假,这两个值用来表示事物的状态,它们必居其一。通过测量布尔值可以判断是否执行某个步骤。 4、字符型常量 字符型常量是一个单一的字符,其形式是由两个单引号引起来的一个字符。但是两个单引号引起来的不能是单引号和反斜杠,即‘""和‘"是不正确的写法。 大家一定要记住,Java语言中的字符是16位的Unicode字符,这与C/C++等语言是不一样的。 同C/C++语言一样,Java语言也有转意序列。Java中的转意序列的功能见下表: 转义序列 标准形式 功能描述 继续 NL 回车换行 HT 水平制表符 BS 后退一格 CR 回车不换行 f FF 换页 " " 单引号 \ 反斜杠 " " 双引号 ddd 0ddd 八进制模式 xddd 0xddd 十六进制模式 udddd 0xdddd Unicode双字节字符 字符串常量 字符串常量是由双引号引起来的一系列字符,与C/C++语言中不同的是,Java语言中的字符串不是通过字符数组来实现的,而是通过字符串类(即String类)来实现的。 四、变量和数据类型 在Java中,数据的类型可以分为四种:基本数据类型、数组类型、类和接口类型。任何数据都一定是上述数据类型的一种。 其中基本数据类型可以分为四大类:布尔型、字符型、整数型和浮点型。这些类型的数据与前面介绍的常量的类型基本相同,在此不再多说。下面将整数型和浮点型变量的取值范围列出: 表一、 类型 宽度 取值范围 byte 8位 -256到256 short 16位 -32768到32767 int 32位 -***********到*********** long 64位 -9223372036854775808到9223372036854775807 表二、 进制 整数 长整数 十进制 最大正整数 ***********(2的31次方减1) 923372036854775807L(2的63次方减1) 八进制 最大正整数 077777777777(2的31次方减1) 07777777777777777777L(2的63次方减1) 最小负整数 020000000000(-2的31次方) 04000000000000000000L(-2的63次方) 十六进制 最大正整数 0x7fffffff(2的31次方减1) 0x7fffffffffffffffL(2的63次方减1) 最小负整数 0x***********(-2的31次方) 0x8000000000000000L(-2的63次方) 浮点数能表示的数值从小到大分别是:负无穷大、负有限值、负零、正零、正有限值及正无穷大。其中正零和负零在进行数值比较的时候是相等的,但仍有办法分辨这两个值,例如在进行1.0/0.0的时候会得到正无穷大的结果。其它非零非无穷大的有限值是以s*m*(2^e)来表示的,s和m的取值范围见下表: 表三、 类型 s m e float +1或-1 小于2的24次方的正整数 149到104的整数 double +1或-1 小于2的53次方的正整数 1045到1000的整数 表四、float 最大值 ***********e+38f 非零最小值 1.***********e-45f double 最大值 1.79769313486231570e+308 非零最小值 4.940656458412465334e-324 另外浮点数还有一些特殊值,见下表:float 最大值 Float.MAX_VALUE 最小值 Float.MIN_VALUE 正无穷大 Float.POSITIVE_INFINITY 负无穷大 Float.NEGATIVE_INFINITY NaN Float.NaN double 最大值 Double.MAX_VALUE 最小值 Double.MIN_VALUE 正无穷大 Double.POSITIVE_INFINITY 负无穷大 Double.NEGATIVE_INFINITY NaN Double.NaN 与C/C++语言中不同的是,在Java语言中,所有的基本数据类型都有预设值,就是说当我们声明一个变量时,即使我们没有对它赋值,它的值也是一定的,而不像在C/C++中那样是不可预测的。具体个类型的预设值见下表: 基本数据类型 预设值 Boolean false Char "u000" Byte (byte)0 Short (short)0 Int 0 Long 0L Float 0.0L Double 0.0d 五、Java与C/C++的比较 由于Java的语法直接来源于C/C++,所以Java的程序控制语句与C/C++一模一样,在此不再多说。以下重点介绍一下Java与C/C++的不同。 指针 大家在使用C语言编程的时候想必都曾经因为指针的复杂计算而烦恼,在C/C++语言编程过程中,指针可能引起许多错误,这些复杂的指针算法所产生的错误常常让人迷惑不解,导致C/C++程序员在此浪费了大量的时间。考虑到这种原因,Java中取消了指针。指针的功能由参考(reference)所取代,这使得Java中对复杂数据结构的实现更加容易,因为用对象和对象数组实现复杂的数据结构更可靠。 函数 在Java中没有C/C++中应用广泛的函数,C/C++中通过函数实现的功能在Java中都是通过类和方法来实现的。 继承 C++支持多重继承,这是一个从多个父类中派生一个类的有效办法,但这种派生很复杂,也很容易产生问题。因此,Java中没有采用多重继承,但Java的Objective C协议接口能完成C++中多重继承的所有功能。 goto语句 大家知道,在使用高级语言编程时过多的使用goto语句会使程序变得十分混乱,因此Java中也没有使用goto语句。但是不可否认,当程序比较容易控制的时候,适当使用goto语句能使程序的运行更快捷,因此Java中使用了多重break和continue语句(允许break和continue语句使用标签)实现C++种goto语句的功能。 联合和结构 在C++中有三种数据结构:联合、结构和类;Java中只有类,它可以实现上述三者的功能。 字符串 在C/C++中,字符串是通过字符数组实现的,但是由于数组的空间不是动态分配的,这容易出现越界错误,例如:常有预先设定的字符数组不能容纳后输入的字符串。在Java中,字符串是一类特定的对象,这使得字符串更具有一致性和可预见性。 Typedef、Define和预处理器 Java中不需要#define语句、预处理器或者typedef,但需要头文件。在Java中一个类的信息必须包含在一个文件中,而C/C++中有关类的信息可能分散在多个文件中。 数据类型的自动强制转换 在Java中强制一种类型的数据元素变成一种不太精确的数据类型需要编程人员采用预测方法。
c语言中的关键字和保留字的区别?
c语言中的关键字和保留字的区别? 在C语言中,关键字与保留字表示同一个概念,都是表示C语言提供的特殊识别符号,不能用作变数名。 C语言一共有32个关键字(或称保留字),各关键字及其含义如下: auto:指定变数的储存型别,是预设值 break:跳出回圈或switch语句 case:定义switch中的case子句 char:定义字元型变数或指标 const:定义常量或引数 continue:在回圈语句中,回到回圈体的开始处重新执行回圈 default:定义switch中的default子句 do:定义do-while语句 double:定义双精度浮点数变数 else:与if连用 enum:定义列举型别 extern:宣告外部变数或函式 float:定义浮点型变数或指标 for:定义for语句 goto:定义goto语句 if:定义if语句或if-else语句 int:定义整型变数或指标 long:定义长整型变数或指标 register:指定变数的储存型别是暂存器变数,Turbo c中用自动变数代替 return:从函式返回 short:定义短整型变数或指标 signed:定义有符号的整型变数或指标 sizeof:获取某种型别的变数或资料所占记忆体的大小,是运算子 static:指定变数的储存型别是静态变数,或指定函式是静态函式 struct:定义结构体型别 switch:定义switch语句 typedef:为资料型别定义别名 union:定义联合体型别 unsigned:定义无符号的整型变数或资料 void:定义空型别变数或空型别指标,或指定函式没有返回值 volatile:变数的值可能在程式的外部被改变 while:定义while或do-while语句 oracle的关键字和保留字的区别 Reserved Words Oracle SQL Reserved Words 如果不加转移字元是无法用作定义符的,比如说表名,列名,trigger名称等。 KeyWord Oracle SQL keyword 为非保留字,oracle内部使用, 是可以用作定义符的,但是不推荐,因为可读性差,维护体验差。 不建议过分纠结这个问题,多看官方文件就好了。 V$RESERVED_WORDS 这个视图里面详细介绍了Oracle资料库里面的保留字相关资讯,根据场景不同,限制条件也不同。记住一些常用的即可。 保留字是关键字,关键字不一定是保留字。保留字是指在Oracle的新版本已经弃用,但还是会出现在Oracle的新版本中。 mysql关键字和保留字的区别 但是这里要提一下的是mysql是支援使用关键字做栏位名的,但是针对保留关键字是必须要加引用。mysql官网提供了三个例子是可以很好的说明这些的。 interval begin、end都是关键字,interval是保留关键字,因此会报错 mysql> CREATE TABLE interval (begin INT, end INT); ERROR 1064 (42000): You have an error in your SQL syntax ... near "interval (begin INT, end INT)" 当给interval加上引用""后便可以正确执行该sql语句,也不会报begin、end的错,因为这是mysql允许的,但是不推荐这个用法,谁知道升级之后会不会变成保留字。。。。。。 mysql> CREATE TABLE `interval` (begin INT, end INT); Query OK, 0 rows affected (0.01 sec) (这个可以略过,,,,,反正不推荐使用关键字做这些事,)还有一种情况——内建函式的名字,官网是这样说的: Names of built-in functions are permitted as identifiers but may require care to be used as such mysql> CREATE TABLE mydb.interval (begin INT, end INT); Query OK, 0 rows affected (0.01 sec) JAVA中的关键字和保留字 找本书 看看 太多了 请问,c语言中,关键字和保留字是一个意思么? c语言中的关键字和保留字含义是一样的,共有 32 个保留字或关键字,这些保留字或关键字是不能用来作为c程式中的识别符号的。 由ANSI标准定义的C语言关键字共32个 : auto double int struct break else long switchcase enum register typedef char extern return unionconst float short unsigned continue for signed voiddefault goto sizeof volatile do if while static Java中保留字和关键字的区别 Java的关键字对java的编译器有特殊的意义,他们用来表示一种资料型别,或者表示程式的结构等。保留字是为java预留的关键字,他们虽然现在没有作为关键字,但在以后的升级版本中有可能作为关键字。 Java 关键字列表 (依字母排序 共50组): abstract, assert,boolean, break, byte, case, catch, char, class, continue, default, do, double, else, enum,extends, final, finally, float, for, if, implements, import, instanceof, int, interface, long, native, new, package, private, protected, public, return, short, static, strictfp, super, switch, synchronized, this, throw, throws, transient, try, void, volatile, while Java 保留字列表 (依字母排序 共14组) : Java保留字是指现有Java版本尚未使用 但以后版本可能会作为关键字使用。 byValue, cast, false, future, generic, inner, operator, outer, rest, true, var,goto,const, null C++保留字 关键字区别 两者其实差不了多少,可以当一个概念理解 “保留字”和“ 关键字”的区别与联络? 保留字: 系统留用(可能永远也不会用, 但是你不能用)。 关键字: 系统规定有特殊意义的词。 关键字, 一定是保留字。 保留字一般是等同于关键字的。 从字面含义上理解,保留字是语言中已经定义过的字,使用者不能再将这些字作为变数名或过程名使用。而关键字则指在语言中有特定含义,成为语法中一部分的那些字。在一些语言中,一些保留字可能并没有应用于当前的语法中,这就成了保留字与关键字的区别。
字符型变量ch的值为英文字母 的c语言表达式
两种办法,一个是判断ch的scii码是否位于65——90之间包括65和90;另外一种办法直接用字符比较,看ch是否在"a"~"z"之间。这两种方法都可以实现判断字符是否为大写字母。
c语言用中文变量名怎么编译
c语言用中文变量名可以通过以下方式编译:1、变量的命名规则要求用“匈牙利法则”。即开头字母用变量的类型,其余部分用变量的英文意思或其英文意思的缩写,尽量避免用中文的拼音,要求单词的第一个字母应大写。2、变量名=变量类型+变量的英文意思,对非通用的变量,在定义时加入注释说明,变量定义尽量可能放在函数的开始处。
c语言中sum的意思是?
SUM不是关键字吧。应该是求和运算里的变量。
C语言中,temp是什么函数?
没这个函数吧。或者是自定义的吧。 temp一般式作为临时变量,临时函数的。
C语言中变量名有什么要求
你好,变量名必须是字母,数字和下划线的组合,且首字母必须为字母,且不能使用保留字符串比如int enum等。
C语言中flag是什么意思?有什么用处?
C语言中一般设置一个变量flag,是一个来表示判断的变量,当做标志。例如当一直情况的时候,置flag为1,当另外一种情况时,置flag为2。变量名为flag,只是习惯问题,也可以取别的名字
C语言中的temp代表什么
是设置的变量吧。
c语言的tmp什么意思
应该只是一个变量名,很多程序都习惯把一些临时变量命名为tmp(应为英文temporal的简写),表示是一个临时性的变量。
C语言中temp是什么
它只是一个认为定义的变量,没有什么意义。
oceanbase为什么不用C语言开发而要用C++,C++开发是为了开发效率还是别的原因???
可能是因为阿里巴巴很难招到足够多的程序员来用C语言做吧,毕竟C语言开发虽然效果好一些,但是需要的物质和人力资源更多。阿里巴巴这几年一直努力招聘呢。
C语言 push和pop函数可以直接用吗?
C 中需要自己定义实现。C++ 中可以使用 STL 栈容器 stack 的 pop() 和 push()。
Visual FoxPro的编程和C语言有什么区别?
sql server 或者ORACLE还是vfp都有同性,举一反三嘛~关键看个人悟性。为了过级的,如果肯下功夫学习,那建议VFP,容易但内容多且杂。如果逻辑思维非常清晰,那建议报C。
C语言和Visual FoxPro之间有什么区别和联系?哪一个更有用一些?
有用肯定是学C语言更有用,现在的公司管理数据库都用sqlserver或者ORACLE,根本不用VFP。C语言是一代经典语言,虽然有一些问题,但有的时候还是很好用的,现在的一些程序还是用C语言编写的。不过学什么要看以后会不会用到,如果用不到,不如学一个简单的。VFP要求不高,容易过。还有,不要立志当程序员,程序员是软件开发公司最底层的人员,工资绝不会很高。
Visual FoxPro的编程和C语言有什么区别?
1、C语言编的出来的,Visual FoxPro不一定能编的出来。因为Visual FoxPro只适用于windows平台。C语言的应用范围很广,PC各种系统,嵌入式,单片机很多都能用C语言来开发。2、Visual FoxPro用的就是vfp语言,感觉更像是一些指令。3、因为Visual FoxPro很加容易上手,而且还支持数据库。如果你学会了Visual FoxPro,相当于你对“面向过程的语言”(如C)和“数据库处理”都入门了。而且,你还可以通过Visual FoxPro来考计算机证书。值得一提的是,Visual FoxPro最后版本是9.0。微软已经不再更新了,这个语言现在已近基本没有什么公司在用了。如果为了应付考试,学下无妨。如果以后想走软件这条路,还是踏实的学好C,数据库的话就SQL。如果是面向对象的语言的话可以学下C++或JAVA都很不错。
Visual FoxPro的编程和C语言有什么区别?
1、C语言编的出来的,Visual FoxPro不一定能编的出来。因为Visual FoxPro只适用于windows平台。x0dx0aC语言的应用范围很广,PC各种系统,嵌入式,单片机很多都能用C语言来开发。x0dx0a2、Visual FoxPro用的就是vfp语言,感觉更像是一些指令。x0dx0a3、因为Visual FoxPro很加容易上手,而且还支持数据库。如果你学会了Visual FoxPro,相当于你对“面向过程的语言”(如C)和“数据库处理”都入门了。而且,你还可以通过Visual FoxPro来考计算机证书。x0dx0a值得一提的是,Visual FoxPro最后版本是9.0。微软已经不再更新了,这个语言现在已近基本没有什么公司在用了。如果为了应付考试,学下无妨。如果以后想走软件这条路,还是踏实的学好C,数据库的话就SQL。如果是面向对象的语言的话可以学下C++或JAVA都很不错。
请问:C语言和VB、VF是什么关系?
当真是初学者啊。C、VB、VF都是编程语言,都可用于编程,都有其相对应的开发环境,不同的是,C的开发环境可以有多种,而VB、VF本身就集成了开发环境。从适用程度上来讲,VB、VF都很简单,但VB是通用的语言,VF却只适用于小型数据库,从功能上讲VF远不如VB。从学习难度上来讲,想学好VF最好先学数据库理论,想学VB却没不需要基础,但想学好,真要学的东西还挺多。从历史上来讲,VB是basic语言的第四代版本。想学C,就学VC。版本不是太好说,虽说最新的.NET已非常普遍,但人个编程用的更多的还是6.0版本,如VB6、VC6。但最终有可能统一到.net版本,如果是初学者,还是高起点,直接从.net开始吧。
计算机二级 c语言, Visual Basic ,VisualC++, Visual Foxpro分别是什么意思?
这是国家计算机等级考试基本上每所高校的大学生都要 考计算机等级证书,也为了以后就业~c语言 是一门最基础的编程语言! vb是面向对象的编程语言!vc想对而言要有 c/c++的编程基础才好学,至于vfp吗,是安全性不是很好的数据库!,想考国家计算机二级!要是新人,对编程没有基础的,我建议你考access数据库吧~~~相对而言我感觉比较简单!
C语言VB、VC、VF、C++各有什么区别?
VF 的前身是FoxPro。FoxPro隶属于一种名为Xbase的DBMS类别。当时FoxPro及其以前的dBase都是用于数据库管理的。后来,被微软收购后,改造成可视化的一个编程开发环境,用于开发数据库应用程序。优势应该是数据库开发,自身带有数据库管理系统,访问数据库效率很高。网上说,现在微软对它的宣传已经很少了。C/C++,VC/VC++这是一个系列的产品。C和C++都能叫做一种语言,但是VC和VC++不能。加了一个V字,只是说你可以使用windows的很多API实现编程,并可以使用相应的可视化开发工具,如资源编辑器等,但是使用的仍然是C和C++语言。++则表示对面向对象的支持,即类的出现。VB的前身应该是Basic,他们的语法应该也是基本一致的。这个我不是很了解,VB和basic的关系应该与C和VC的关系类似。这是初学者专用语言,相对其他可视化编程,最简单。代码效率比较低,做个界面还行。这几种语言中C系列的语言最为强大。当前软件开发的三大主流语言:C++,Java,C#。
c语言中void什么意思?
void代表一个函数的状态,表示无返回值return。。如果有返回值,就不能用void了。
C语言中“void”是什么意思
“空”的意思
c语言中void什么意思
空类型。无返回值。
C语言中的加void和不加有什么不同吗?
void真正发挥的作用在于:(1) 对函数返回的限定;(2) 对函数参数的限定。众所周知,如果指针p1和p2的类型相同,那么我们可以直接在p1和p2间互相赋值;如果p1和p2指向不同的数据类型,则必须使用强制类型转换运算符把赋值运算符右边的指针类型转换为左边指针的类型。
c语言中void什么意思?具体怎么用?大神们帮帮忙
就是空,没有的意思
c语言中的int main(void)是什么意思
main函数返回值为int整型,参数表void为空。
void在c语言中什么意思
void在c语言中是空的意思。void的字面意思是“无类型”,void*则为“无类型指针”,void*可以指向任何类型的数据。void几乎只有“注释”和限制程序的作用。因为从来没有人会定义一个void变量,让我们试着来定义:voida;这行语句编译时会出错,提示“illegaluseoftypevoid”。不过,即使voida的编译不会出错,它也没有任何实际意义。void真正发挥的作用在于对函数返回的限定;对函数参数的限定。void在c语言的应用注意事项void中文翻译为”无类型”。常用在程序编写中对定义函数的参数类型、返回值、函数中指针类型进行声明。void的字面意思是”无类型”,void*则为”无类型指针”,void*可以指向任何类型的数据。在C语言中,凡不加返回值类型限定的函数,就会被编译器作为返回整型值处理。但是许多程序员却误以为其为void类型。
c语言void的意思是什么?
c语言中,void的意思是“无类型”,相应的“void *”为无类型指针,常用在程序编写中对定义函数的参数类型、返回值、函数中指针类型进行声明,其作用是对函数返回和参数的进行限定。void 可以作为函数返回值类型,有void就代表没有返回值。在定义的函数中,有的函数前是void有的是int或者float等等数据类型,此时它们被称为函数的返回值类型。当返回值类型为void时,称这个函数返回空,或者这个函数无返回值。c语言void的用法特点:使用void去修饰指针的时候,这种通用类型的指针可以很方便的和其他类型的指针之间进行相关转换。void另一个重要的应用则就是跟函数进行结合主要有以下两个方面的应用:对函数返回的限定;对函数参数的限定。void类型不能够用来申明变量和常量,因为申明变量的时候需要明确告诉编译器,该变量是什么类型,比如说是int或char类型,这样编译才好为这个变量去分配存储空间。总的来说,void应用最广泛的就是跟指针结合,而void和指针的结合也大大扩展了指针的可能性。
C语言中,函数前加void是什么意思?
每个函数都做一件事,事情做完的话最好告诉别人,函数也是,fun就是一个人,后面括号里面的就是传入参数,也就是别人叫你做的事,fun前面的是返回值,就是你告诉别人这件事做的怎么样了,void类型就是空类型,做完了不告诉别人,在函数里面return ;就行了。写个简单的例子x0dx0aint add(int a,int b)x0dx0a{x0dx0a return a+b;x0dx0a}x0dx0a这个就是把a+b的结果传出去,因为是int行,所以返回值也是int型,就用int了
void sort在C语言中什么意思?
void是C语言中的一个关键字,其含义因其应用形式不同,一般分为两种:void和void *void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。void几乎只有“注释”和限制程序的作用,定义一个void变量没有意义,不妨试着定义:这行语句编译时会出错,提示“illegal use of type "void"”。不过,即使void a的编译不会出错,它也没有任何实际意义。void真正发挥的作用在于:(1) 对函数返回的限定;(2) 对函数参数的限定。扩展资料:如果函数无参数,那么应声明其参数为void。在C++语言中声明一个这样的函数:int function(void){return1;}则进行下面的调用是不合法的:function(2);因为在C++中,函数参数为void的意思是这个函数不接受任何参数。在Turbo C 2.0中编译:#include "stdio.h"fun(){return 1;}main(){printf("%d",fun(2));getchar();}
C语言中void具体由什么作用
如果这个函数没有返回值就要写上void
C语言中的“void main()”是什么意思?
C语言标准语法是不允许void main()的,只允许int main()。但是某些编译器支持void main()。其意义为:定义main函数(主函数),无返回值。注意:为了增强程序可移植性,最好不要写void main(),否则在一些编译器上可能不能编译、运行。有些语句只有main其实是合法的。ANSI C标准规定,如果函数定义中函数名前没有类型标识符,则默认为int类型,所以main()等价于int main()。
C语言中void具体由什么作用
void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量,让我们试着来定义:void a;这行语句编译时会出错,提示“illegal use of type "void"”。不过,即使void a的编译不会出错,它也没有任何实际意义。void真正发挥的作用在于:(1) 对函数返回的限定;(2) 对函数参数的限定。扩展资料:C语言基本数据类型void:声明函数无返回值或无参数,声明无类型指针,显示丢弃运算结果。(C89标准新增)char:字符型类型数据,属于整型数据的一种。(K&R时期引入)int:整型数据,表示范围通常为编译器指定的内存字节长。(K&R时期引入)float:单精度浮点型数据,属于浮点数据的一种。(K&R时期引入)double:双精度浮点型数据,属于浮点数据的一种。(K&R时期引入)_Bool:布尔型(C99标准新增)_Complex:复数的基本类型(C99标准新增)_Imaginary:虚数,与复数基本类型相似,没有实部的纯虚数(C99标准新增)_Generic:提供重载的接口入口(C11标准新增)类型修饰关键字short:修饰int,短整型数据,可省略被修饰的int。(K&R时期引入)long:修饰int,长整型数据,可省略被修饰的int。(K&R时期引入)long long:修饰int,超长整型数据,可省略被修饰的int。(C99标准新增)signed:修饰整型数据,有符号数据类型。(C89标准新增)unsigned:修饰整型数据,无符号数据类型。(K&R时期引入)restrict:用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式。(C99标准新增)参考资料:C语言-百度百科
C语言中void的作用是什么?
1.10,void关键字 void有什么好讲的呢?如果你认为没有,那就没有;但如果你认为有,那就真的有。有点像“色即是空,空即是色”。1.10.1,void a? void的字面意思是“空类型”,void*则为“空类型指针”,void*可以指向任何类型的数据。void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量,看看下面的例子: voida; VisualC++6.0上,这行语句编译时会出错,提示“illegaluseoftype"void"”。不过,即使voida的编译不会出错,它也没有任何实际意义。 void真正发挥的作用在于: (1) 对函数返回的限定; (2) 对函数参数的限定。 众所周知,如果指针p1和p2的类型相同,那么我们可以直接在p1和p2间互相赋值;如果p1和p2指向不同的数据类型,则必须使用强制类型转换运算符把赋值运算符右边的指针类型转换为左边指针的类型。例如: float *p1; int *p2; p1=p2;其中p1=p2语句会编译出错,提示“"=":cannotconvertfrom"int*"to"float*"”,必须改为: p1=(float*)p2;而void*则不同,任何类型的指针都可以直接赋值给它,无需进行强制类型转换: void *p1; int *p2; p1=p2;但这并不意味着,void*也可以无需强制类型转换地赋给其它类型的指针。因为“空类型”可以包容“有类型”,而“有类型”则不能包容“空类型”。比如,我们可以说“男人和女人都是人”,但不能说“人是男人”或者“人是女人”。下面的语句编译出错: void *p1; int *p2; p2=p1;提示“"=":cannotconvertfrom"void*"to"int*"”。1.10.2,void修饰函数返回值和参数 【规则1-33】如果函数没有返回值,那么应声明为void类型 在C语言中,凡不加返回值类型限定的函数,就会被编译器作为返回整型值处理。但是许多程序员却误以为其为void类型。例如: add(inta,intb) { return a+b; } intmain(intargc,char*argv[])//甚至很多人以为main函数无返回值 //或是为void型的 { printf("2+3=%d",add(2,3)); }程序运行的结果为输出: 2+3=5这说明不加返回值说明的函数的确为int函数。 因此,为了避免混乱,我们在编写C程序时,对于任何函数都必须一个不漏地指定其类型。如果函数没有返回值,一定要声明为void类型。这既是程序良好可读性的需要,也是编程规范性的要求。另外,加上void类型声明后,也可以发挥代码的“自注释”作用。所谓的代码的“自注释”即代码能自己注释自己。 【规则1-34】如果函数无参数,那么应声明其参数为void 在C++语言中声明一个这样的函数: intfunction(void) { return1; } 则进行下面的调用是不合法的:function(2); 因为在C++中,函数参数为void的意思是这个函数不接受任何参数。 但是在TurboC2.0中编译: #include"stdio.h" fun() { return1; } main() { printf("%d",fun(2)); getchar(); } 编译正确且输出1,这说明,在C语言中,可以给无参数的函数传送任意类型的参数,但是在C++编译器中编译同样的代码则会出错。在C++中,不能向无参数的函数传送任何参数,出错提示“"fun":functiondoesnottake1parameters”。 所以,无论在C还是C++中,若函数不接受任何参数,一定要指明参数为void。1.10.3,void指针 【规则1-35】千万小心又小心使用void指针类型。 按照ANSI(AmericanNationalStandardsInstitute)标准,不能对void指针进行算法操作,即下列操作都是不合法的: void*pvoid; pvoid++;//ANSI:错误 pvoid+=1;//ANSI:错误 ANSI标准之所以这样认定,是因为它坚持:进行算法操作的指针必须是确定知道其指向数据类型大小的。也就是说必须知道内存目的地址的确切值。例如: int*pint; pint++;//ANSI:正确 但是大名鼎鼎的GNU(GNU"sNotUnix的递归缩写)则不这么认定,它指定void*的算法操作与char*一致。因此下列语句在GNU编译器中皆正确: pvoid++;//GNU:正确 pvoid+=1;//GNU:正确 在实际的程序设计中,为符合ANSI标准,并提高程序的可移植性,我们可以这样编写实现同样功能的代码: void*pvoid; (char*)pvoid++;//ANSI:正确;GNU:正确 (char*)pvoid+=1;//ANSI:错误;GNU:正确 GNU和ANSI还有一些区别,总体而言,GNU较ANSI更“开放”,提供了对更多语法的支持。但是我们在真实设计时,还是应该尽可能地符合ANSI标准。 【规则1-36】如果函数的参数可以是任意类型指针,那么应声明其参数为void*。 典型的如内存操作函数memcpy和memset的函数原型分别为: void*memcpy(void*dest,constvoid*src,size_tlen); void*memset(void*buffer,intc,size_tnum); 这样,任何类型的指针都可以传入memcpy和memset中,这也真实地体现了内存操作函数的意义,因为它操作的对象仅仅是一片内存,而不论这片内存是什么类型。如果memcpy和memset的参数类型不是void*,而是char*,那才叫真的奇怪了!这样的memcpy和memset明显不是一个“纯粹的,脱离低级趣味的”函数! 下面的代码执行正确:例子:memset接受任意类型指针 intIntArray_a[100]; memset(IntArray_a,0,100*sizeof(int));//将IntArray_a清0例子:memcpy接受任意类型指针 intdestIntArray_a[100],srcintarray_a[100]; //将srcintarray_a拷贝给destIntArray_a memcpy(destIntArray_a,srcintarray_a,100*sizeof(int));有趣的是,memcpy和memset函数返回的也是void*类型,标准库函数的编写者都不是一般人。1.10.4,void不能代表一个真实的变量 【规则1-37】void不能代表一个真实的变量。因为定义变量时必须分配内存空间,定义void类型变量,编译器到底分配多大的内存呢。 下面代码都企图让void代表一个真实的变量,因此都是错误的代码: voida;//错误 function(voida);//错误 void体现了一种抽象,这个世界上的变量都是“有类型”的,譬如一个人不是男人就是女人(人妖不算)。 void的出现只是为了一种抽象的需要,如果你正确地理解了面向对象中“抽象基类”的概念,也很容易理解void数据类型。正如不能给抽象基类定义一个实例,我们也不能定义一个void(让我们类比的称void为“抽象数据类型”)变量。 void简单吧?到底是“色”还是“空”呢?<<<<<<<<<<<<<,,,复制《C语言深度解剖》上的 >>>>>>>>>>>>>>>>>>>
C语言中void是什么意思
定义的什么 函数就返回什么 void就是返回空 说白了 就是什么都不返回 返回值 知道吗
c语言中void什么意思
void在c语言中是空的意思。void的字面意思是“无类型”,void*则为“无类型指针”,void*可以指向任何类型的数据。void几乎只有“注释”和限制程序的作用。因为从来没有人会定义一个void变量,让我们试着来定义:voida;这行语句编译时会出错,提示“illegaluseoftypevoid”。不过,即使voida的编译不会出错,它也没有任何实际意义。void真正发挥的作用在于对函数返回的限定;对函数参数的限定。void在c语言的应用注意事项void中文翻译为”无类型”。常用在程序编写中对定义函数的参数类型、返回值、函数中指针类型进行声明。void的字面意思是”无类型”,void*则为”无类型指针”,void*可以指向任何类型的数据。在C语言中,凡不加返回值类型限定的函数,就会被编译器作为返回整型值处理。但是许多程序员却误以为其为void类型。
哪里有C++,C语言,VB,JAVA语言程序设计的视频教程
其实不仅学习JAVA,无论学习什么,其实还是看个人努力程度。还有老师是不是负责,比如动力节点培训中心以王勇老师为首的全体老师,都特别有责任心学到的东西让大学熟练掌握,基本把基础学习牢固了,学起来也就很简单。有兴趣的同学可以百度搜索“动力节点”或“王勇Java”。 Y
c语言中void什么意思?具体怎么用?
void表示函数没有返回值,如:void test(){}如果不是用void,比如用int或者别的,则函数需要有返回值如:int test(){return 1;}其实就是声明一个函数必需要得到一个结果,void就是不需要结果的一个方法(函数)否则如int、char等,就必需返回一个与其对应的数据这个方法(函数)才能编译通过并试用。希望对你有用呀祝你好运
c语言中void什么意思
void:声明函数多有返回值或多参数,声明多类型指针,显示获取运算结果。
C语言中,函数前加void是什么意思?
每个函数都做一件事,事情做完的话最好告诉别人,函数也是,fun就是一个人,后面括号里面的就是传入参数,也就是别人叫你做的事,fun前面的是返回值,就是你告诉别人这件事做的怎么样了,void类型就是空类型,做完了不告诉别人,在函数里面return;就行了。写个简单的例子intadd(inta,intb){returna+b;}这个就是把a+b的结果传出去,因为是int行,所以返回值也是int型,就用int了
我想学习java需要先学习c语言吗?因为我基本上是零基础的!
世界万物皆对象,先学哪个并不要紧…
void在c语言中什么意思
c语言void的意思是无返回数值。void真正发挥的作用在于:对函数返回的限定。对函数参数的限定。如果把void和int,char,double等类型放到一起理解的话,首先还是那句揭示本质的话:变量类型就是固定大小内存块的别名,那么void占用多大内存呢,编译器并没有定义void占用多大内存,所以对于void var;这样的定义。选择结构:对于要先做判断再选择的问题就要使用选择结构。选择结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。选择结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的选择语句。选择结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样做把程序设计分析与语言分开,使得问题简单化,易于理解。程序流程图是根据解题分析所绘制的程序执行流程图。
c语言中void什么意思?具体怎么用?
就是空,没有的意思
void是什么意思,c语言是什么?
void 在c语言中也是一种数据类型,是一种没有任何格式限制的类型,比如函数不需要返回值就标记为void,比如一个变量也可以声明为void,根据需要可以转换为其他类型。
c语言中void什么意思?具体怎么用?
两种含义,一个是无类型,一个是不输出,举个例子:void main(),这个就是无类型函数,void max()这个就是无输出(最大值)
c语言中void的含义是什么?
c语言中void的含义为“无效的”,“空的”。常用在两个地方,第一是对函数返回值的限定,表示这个函数没有返回值。第二个是对函数参数的限定,表示这个函数不接受参数。
C语言中的函数类型void什么详细意思?
我hi你一下
c语言中void是什么意思?有什么用处?
可以理解为JAVA里的NEW
C语言中Valatile关键字有什么用
volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这样的程序:short flag;void test(){do1();while(flag==0);do2();}这段程序等待内存变量flag的值变为1(怀疑此处是0,有点疑问,)之后才运行do2()。变量flag的值由别的程序更改,这个程序可能是某个硬件中断服务程序。例如:如果某个按钮按下的话,就会对DSP产生中断,在按键中断程序中修改flag为1,这样上面的程序就能够得以继续运行。但是,编译器并不知道flag的值会被别的程序修改,因此在它进行优化的时候,可能会把flag的值先读入某个寄存器,然后等待那个寄存器变为1。如果不幸进行了这样的优化,那么while循环就变成了死循环,因为寄存器的内容不可能被中断服务程序修改。为了让程序每次都读取真正flag变量的值,就需要定义为如下形式:volatile short flag;需要注意的是,没有volatile也可能能正常运行,但是可能修改了编译器的优化级别之后就又不能正常运行了。因此经常会出现debug版本正常,但是release版本却不能正常的问题。所以为了安全起见,只要是等待别的程序修改某个变量的话,就加上volatile关键字。volatile的本意是“易变的”由于访问寄存器的速度要快过RAM,所以编译器一般都会作减少存取外部RAM的优化。比如:static int i=0;int main(void){...while (1){if (i) do_something();}}/* Interrupt service routine. */void ISR_2(void){i=1;}程序的本意是希望ISR_2中断产生时,在main当中调用do_something函数,但是,由于编译器判断在main函数里面没有修改过i,因此可能只执行一次对从i到某寄存器的读操作,然后每次if判断都只使用这个寄存器里面的“i副本”,导致do_something永远也不会被调用。如果变量加上volatile修饰,则编译器保证对此变量的读写操作都不会被优化(肯定执行)。此例中i也应该如此说明。一般说来,volatile用在如下的几个地方:1、中断服务程序中修改的供其它程序检测的变量需要加volatile;2、多任务环境下各任务间共享的标志应该加volatile;3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义;另外,以上这几种情况经常还要同时考虑数据的完整性(相互关联的几个标志读了一半被打断了重写),在1中可以通过关中断来实现,2中可以禁止任务调度,3中则只能依靠硬件的良好设计了。二、volatile 的含义volatile总是与优化有关,编译器有一种技术叫做数据流分析,分析程序中的变量在哪里赋值、在哪里使用、在哪里失效,分析结果可以用于常量合并,常量传播等优化,进一步可以死代码消除。但有时这些优化不是程序所需要的,这时可以用volatile关键字禁止做这些优化,volatile的字面含义是易变的,它有下面的作用:1 不会在两个操作之间把volatile变量缓存在寄存器中。在多任务、中断、甚至setjmp环境下,变量可能被其他的程序改变,编译器自己无法知道,volatile就是告诉编译器这种情况。2 不做常量合并、常量传播等优化,所以像下面的代码: volatile int i = 1; if (i > 0) ... if的条件不会当作无条件真。 3 对volatile变量的读写不会被优化掉。如果你对一个变量赋值但后面没用到,编译器常常可以省略那个赋值操作,然而对Memory Mapped IO的处理是不能这样优化的。前面有人说volatile可以保证对内存操作的原子性,这种说法不大准确,其一,x86需要LOCK前缀才能在SMP下保证原子性,其二,RISC根本不能对内存直接运算,要保证原子性得用别的方法,如atomic_inc。对于jiffies,它已经声明为volatile变量,我认为直接用jiffies++就可以了,没必要用那种复杂的形式,因为那样也不能保证原子性。你可能不知道在Pentium及后续CPU中,下面两组指令 inc jiffies ;; mov jiffies, %eax inc %eax mov %eax, jiffies 作用相同,但一条指令反而不如三条指令快。三、编译器优化 → C关键字volatile → memory破坏描述符zz“memory”比较特殊,可能是内嵌汇编中最难懂部分。为解释清楚它,先介绍一下编译器的优化知识,再看C关键字volatile。最后去看该描述符。 1、编译器优化介绍内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。以上是硬件级别的优化。再看软件一级的优化:一种是在编写代码时由程序员优化,另一种是由编译器进行优化。编译器优化常用的方法有:将内存变量缓存到寄存器;调整指令顺序充分利用CPU指令流水线,常见的是重新排序读写指令。对常规内存进行优化的时候,这些优化是透明的,而且效率很好。由编译器优化或者硬件重新排序引起的问题的解决办法是在从硬件(或者其他处理器)的角度看必须以特定顺序执行的操作之间设置内存屏障(memory barrier),linux 提供了一个宏解决编译器的执行顺序问题。 void Barrier(void)这个函数通知编译器插入一个内存屏障,但对硬件无效,编译后的代码会把当前CPU寄存器中的所有修改过的数值存入内存,需要这些数据的时候再重新从内存中读出。 2、C语言关键字volatileC语言关键字volatile(注意它是用来修饰变量而不是上面介绍的__volatile__)表明某个变量的值可能在外部被改变,因此对这些变量的存取不能缓存到寄存器,每次使用时需要重新存取。该关键字在多线程环境下经常使用,因为在编写多线程的程序时,同一个变量可能被多个线程修改,而程序通过该变量同步各个线程,例如: DWORD __stdcall threadFunc(LPVOID signal) { int* intSignal=reinterpret_cast<int*>(signal); *intSignal=2; while(*intSignal!=1) sleep(1000); return 0; }该线程启动时将intSignal 置为2,然后循环等待直到intSignal 为1 时退出。显然intSignal的值必须在外部被改变,否则该线程不会退出。但是实际运行的时候该线程却不会退出,即使在外部将它的值改为1,看一下对应的伪汇编代码就明白了: mov ax,signal label: if(ax!=1) goto label对于C编译器来说,它并不知道这个值会被其他线程修改。自然就把它cache在寄存器里面。记住,C 编译器是没有线程概念的!这时候就需要用到volatile。volatile 的本意是指:这个值可能会在当前线程外部被改变。也就是说,我们要在threadFunc中的intSignal前面加上volatile关键字,这时候,编译器知道该变量的值会在外部改变,因此每次访问该变量时会重新读取,所作的循环变为如下面伪码所示: label: mov ax,signal if(ax!=1) goto label 3、Memory有了上面的知识就不难理解Memory修改描述符了,Memory描述符告知GCC: 1)不要将该段内嵌汇编指令与前面的指令重新排序;也就是在执行内嵌汇编代码之前,它前面的指令都执行完毕 2)不要将变量缓存到寄存器,因为这段代码可能会用到内存变量,而这些内存变量会以不可预知的方式发生改变,因此GCC插入必要的代码先将缓存到寄存器的变量值写回内存,如果后面又访问这些变量,需要重新访问内存。如果汇编指令修改了内存,但是GCC 本身却察觉不到,因为在输出部分没有描述,此时就需要在修改描述部分增加“memory”,告诉GCC 内存已经被修改,GCC 得知这个信息后,就会在这段指令之前,插入必要的指令将前面因为优化Cache 到寄存器中的变量值先写回内存,如果以后又要使用这些变量再重新读取。使用“volatile”也可以达到这个目的,但是我们在每个变量前增加该关键字,不如使用“memory”方便。
关于c语言中的volatile限定符
本章描述C++的表达式,表达式是用于一个或多个以下目的的运算符和操作数序列:* 从操作数计算出一个值* 设计对象或函数* 产生“副作用”(副作用是非表达式求值的任何动作,例如,修改一个对象的值)。在C++中,运算符可被重载而且它们的含义可由用户定义,但是它们的优先级以及所带操作数的个数不能被修改。本章描述该语言中所提供的而非重载的运算符的语法和语义,包括以下主题:* 表达式的类型* 表达式的语义* 造型转换(有关重载的运算符的更多信息参见第12章“重载”中的“重载的运算符”)。注意:内部类型的运算符不能被重载,它们的行为是预先定义好的。
C语言中的volatile是什么意思?怎么用?谢了
C语言关键字volatile,表示不经过赋值,其值也可能被改变
c语言什么时候用volatile
当一个对象的值可能会在编译器的控制或检测之外被改变时,例如一个被系统时钟更新的变量,那么对象应该声明成volatile。编译器执行的某些例行优化行为不能应用在已指定为volatile的对象上。volatile限定符的用法同const非常相似,都是作为类型的附加修饰符。volatile修饰符的主要目的是提示编译器,该对象的值可能在编译器未监测到的情况下被改变。因此编译器不能武断的对引用这些对象的代码作优化处理。
C语言中volatile在什么情况下使用
简单的理解就是这个变量可能会被外部函数改变,为了让这个改变能有效执行,不被编译器优化掉。举个例子吧,一个函数用了一个外部的变量,但这个变量在此函数中没有改变,只是引用,这时候编译器会去做优化,把它的值暂放在内部寄存器中,用的时候读取的是寄存器的值,而不是去访问它的地址取值,这样的话,当这个变量在外部发生了变化的时候,比如中断,或者另外的进程等等。但在这个函数里面就不能起作用,因为被优化后使用的是寄存器的值,还是原来的值,导致错误发生。这种情况下,就要加上这个定义,就不会被优化了。
c语言中volatile关键字是什么含义
volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化。)。例如:volatile int i=10;int j = i;...int k = i;volatile 告诉编译器i是随时可能发生变化的,每次使用它的时候必须从i的地址中读取,因而编译器生成的可执行码会重新从i的地址读取数据放在k中。而优化做法是,由于编译器发现两次从i读数据的代码之间的代码没有对i进行过操作,它会自动把上次读的数据放在k中。而不是重新从i里面读。这样以来,如果i是一个寄存器变量或者表示一个端口数据就容易出错,所以说volatile可以保证对特殊地址的稳定访问,不会出错。
C语言中的volatile是什么意思
volatile 实例讲解volatile的本意是一般有两种说法--1.“暂态的”;2.“易变的”。这两种说法都有可行。但是究竟volatile是什么意思,现举例说明(以Keil-c与a51为例例子来自Keil FQA),看完例子后你应该明白volatile的意思了,如果还不明白,那只好再看一遍了。例1.void main (void){volatile int i;int j;i = 1; //1 不被优化 i=1i = 2; //2 不被优化 i=1i = 3; //3 不被优化 i=1j = 1; //4 被优化j = 2; //5 被优化j = 3; //6 j = 3}---------------------------------------------------------------------例2.函数:void func (void){unsigned char xdata xdata_junk;unsigned char xdata *p = &xdata_junk;unsigned char t1, t2;t1 = *p;t2 = *p;}编译的汇编为:0000 7E00 R MOV R6,#HIGH xdata_junk0002 7F00 R MOV R7,#LOW xdata_junk;---- Variable "p" assigned to Register "R6/R7" ----0004 8F82 MOV DPL,R70006 8E83 MOV DPH,R6;!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 注意0008 E0 MOVX A,@DPTR0009 F500 R MOV t1,A000B F500 R MOV t2,A;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!000D 22 RET 将函数变为:void func (void){volatile unsigned char xdata xdata_junk;volatile unsigned char xdata *p = &xdata_junk;unsigned char t1, t2;t1 = *p;t2 = *p;}编译的汇编为:0000 7E00 R MOV R6,#HIGH xdata_junk0002 7F00 R MOV R7,#LOW xdata_junk;---- Variable "p" assigned to Register "R6/R7" ----0004 8F82 MOV DPL,R70006 8E83 MOV DPH,R6;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0008 E0 MOVX A,@DPTR0009 F500 R MOV t1,A a处000B E0 MOVX A,@DPTR000C F500 R MOV t2,A;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!000E 22 RET 比较结果可以看出来,未用volatile关键字时,只从*p所指的地址读一次如在a处*p的内容有变化,则t2得到的则不是真正*p的内容。---------------------------------------------------------------------例3volatile unsigned char bdata var; // use volatile keyword heresbit var_0 = var^0;sbit var_1 = var^1;unsigned char xdata values[10];void main (void) { unsigned char i; for (i = 0; i < sizeof (values); i++) { var = values[i]; if (var_0) { var_1 = 1; //a处 values[i] = var; // without the volatile keyword, the compiler // assumes that "var" is unmodified and does not // reload the variable content. } }}在此例中,如在a处到下一句运行前,var如有变化则不会,如var=0xff; 则在values[i] = var;得到的还是values[i] = 1;---------------------------------------------------------------------应用举例:例1.#define DBYTE ((unsigned char volatile data *) 0)说明:此处不用volatile关键字,可能得不到真正的内容。---------------------------------------------------------------------例2.#define TEST_VOLATILE_C //***************************************************************// verwendete Include Dateien//***************************************************************#if __C51__ < 600 #error: !! Keil 版本不正确#endif//***************************************************************// 函数 void v_IntOccured(void)//***************************************************************extern void v_IntOccured(void);//***************************************************************// 变量定义//***************************************************************char xdata cvalue1; //全局xdatachar volatile xdata cvalue2; //全局xdata//***************************************************************// 函数: v_ExtInt0()// 版本:// 参数:// 用途:cvalue1++,cvalue2++//***************************************************************void v_ExtInt0(void) interrupt 0 { cvalue1++; cvalue2++; } //***************************************************************// 函数: main()// 版本:// 参数:// 用途:测试volatile//***************************************************************void main() {char cErg;//1. 使cErg=cvalue1;cErg = cvalue1;//2. 在此处仿真时手动产生中断INT0,使cvalue1++; cvalue2++if (cvalue1 != cErg) v_IntOccured();//3. 使cErg=cvalue2;cErg = cvalue2;//4. 在此处仿真时手动产生中断INT0,使cvalue1++; cvalue2++if (cvalue2 != cErg) v_IntOccured(); //5. 完成 while (1);}//***************************************************************// 函数: v_IntOccured()// 版本:// 参数:// 用途: 死循环//***************************************************************void v_IntOccured() { while(1);}仿真可以看出,在没有用volatile时,即2处,程序不能进入v_IntOccured();但在4处可以进入v_IntOccured();
C语言中关键字volatile是什么意思
简单的理解就是这个变量可能会被外部函数改变,为了让这个改变能有效执行,不被编译器优化掉。举个例子吧,一个函数用了一个外部的变量,但这个变量在此函数中没有改变,只是引用,这时候编译器会去做优化,把它的值暂放在内部寄存器中,用的时候读取的是寄存器的值,而不是去访问它的地址取值,这样的话,当这个变量在外部发生了变化的时候,比如中断,或者另外的进程等等。但在这个函数里面就不能起作用,因为被优化后使用的是寄存器的值,还是原来的值,导致错误发生。这种情况下,就要加上这个定义,就不会被优化了。
麻烦救急用C语言写
此题输入输出未规范格式,比如文件中存放的是怎样的数据?是序号 笔试分 面试分 第一志愿 第二志愿这种格式还是序号 综合分 第一志愿 第二志愿之类的格式?最后期望的显示结果是什么?合格的录取情况统计并且详细的序号 录取部门这样的输出?
关于C语言自定义printf函数名的问题
这样能行吗?
请做一下 以下 这道C语言的 填空题~
没见过这样的题。在哪找的题?
c语言问题
1c 2b 3c 4b 6d8d9b10d11c12dc
c语言关于结构体长度的问题
c语言标准类型中有longint和shortint,但没有规定int长度一般编译器把int处理成longint(4bytes),少数编译器把int处理成shortint(2bytes),structstu{shortintnumber;//处理成short,2字节charname[10];}a;sizeof(a)等于12------------------------structstu{longintnumber;//处理成long,4字节charname[10];//考虑4字节对齐,+2}a;sizeof(a)等于16======================sizeof(b)的值(32位系统)一般编译器处理成unsignedlongint得4老式编译器,(16位系统)处理成unsignedshortint得2===你的题目源于老编译器,老的16位系统,或老旧的教材。
C语言,删除一行
删除文件里的一行内容,后面的行向前移动一行,清空最后一行,程序如下:假定一行不超过1000字符,删去第3行,L=3.输入输出文件名a.txt#include<stdio.h>voidmain(){FILE*fin;fpos_tpos_w,pos_r,pos;inti,k,L=3;char*one_line;one_line=(char*)malloc(1000*sizeof(char));fin=fopen("a.txt","rb+");for(i=1;i<L;i++)fgets(one_line,999,fin);fgetpos(fin,&pos_w);fgets(one_line,999,fin);//deletefgetpos(fin,&pos_r);pos=pos_r;while(1==1){fsetpos(fin,&pos);if(fgets(one_line,999,fin)==NULL)break;fgetpos(fin,&pos_r);pos=pos_w;fsetpos(fin,&pos);fprintf(fin,"%s",one_line);fgetpos(fin,&pos_w);pos=pos_r;}pos=pos_w;fsetpos(fin,&pos);k=strlen(one_line);for(i=0;i<k;i++)fputc(0x20,fin);fclose(fin);}
c语言函数的最长单词输出问题 新手求助大佬
void f(char a[]){ int pos,tpos,len=0,tlen=0; int i=0; do { if ((a[i]>="a" && a[i]<="z")||(a[i]>="A" && a[i]<="Z")) { if (!tlen) tpos=i; tlen++; } else { if (tlen>len) { pos=tpos; len=tlen; } tlen=0; } } while (a[i++]);for (i=0;i<len;i++) printf("%c",a[pos+i]);}
如何使用单片机C语言实现复位
...那没有碟的话岂不一直复位了。。。