c89

时间:2024-09-06 14:55:54编辑:揭秘君

现在大学教c语言,用的是c89吗

C语言的标准就是定义任何一个支持该标准的C语言编译器必须支持的语法和必须提供的库。新的标准是在旧标准的基础上进行扩展,一般都是向后兼容的。

不过现在的编译器对C语言标准的支持不太积极(主要精力放在C++上面),比如VC++编译器只是部分支持了C99,所以新的C语言标准不太实用,你最好还是好好学习C89标准,现在的C语言教程一般都是以这个标准。


C语言目前使用最多的是哪个标准?C89还是C99?还是??

C89是老标准,C99相对是新标准.具体选择看你所从事的是什么行业?
俺是做嵌入式的,如果用支持C99的编译器,可移植性就不高.因为很多老设备用的都是C89标准.不过C99是以后的趋势.
因为现在很多比如银行、航空、税务、通讯……系统的源代码仍是C89
我猜。
把有限的生命浪费在品尝/品鉴无穷多种的新鲜、靓丽、添加很多香精的语法糖中,我认为不值当也不健康。


c982怎么算

=c2,100=100*99/2=4950。排列组合c的公式:C(n,m)=A(n,m)/m!=n!/m!(n-m)!与C(n,m)=C(n,n-m)。(n为下标,m为上标)。排列组合c计算方法:C是从几个中选取出来,不排列,只组合。C(n,m)=n*(n-1)*...*(n-m+1)/m!注意事项:1、不同的元素分给不同的组,如果有出现人数相同的这样的组,并且该组没有名称,则需要除序,有几个相同的就除以几的阶乘,如果分的组有名称,则不需要除序。2、隔板法就是在n个元间的n-1个空中插入若干个隔板,可以把n个元素分成(n+1)组的方法,应用隔板法必须满足这n个元素必须互不相异,所分成的每一组至少分得一个元素,分成的组彼此相异。3、对于带有特殊元素的排列组合问题,一般应先考虑特殊元素,再考虑其他元素。


C99标准和C89标准的区别

  C99相对C89的区别:
  1、增加restrict指针
  C99中增加了公适用于指针的restrict类型修饰符,它是初始访问指针所指对象的惟一途径,因此只
  有借助restrict指针表达式才能访问对象。restrict指针指针主要用做函数变元,或者指向由malloc()函
  数所分配的内存变量。restrict数据类型不改变程序的语义。
  如果某个函数定义了两个restrict指针变元,编译程序就假定它们指向两个不同的对象,memcpy()
  函数就是restrict指针的一个典型应用示例。C89中memcpy()函数原型如下:
  代码:
  void *memcpy (void *s1, const void *s2, size_t size);  如果s1和s2所指向的对象重叠,
  其操作就是未定义的。memcpy()函数只能用于不重叠的对象。C99中memcpy()函数原型如下:
  代码:
  void *memcpy(void *restrict s1, const void *restrict s2,size_t size);  通过使用restrict
  修饰s1和s2 变元,可确保它们在该原型中指向不同的对象。
  2、inline(内联)关键字
  内联函数除了保持结构化和函数式的定义方式外,还能使程序员写出高效率的代码。函数的每次调用与
  返回都会消耗相当大的系统资源,尤其是当函数调用发生在重复次数很多的循环语句中时。一般情况下,当发
  生一次函数调用时,变元需要进栈,各种寄存器内存需要保存。当函数返回时,寄存器的内容需要恢复。如果该
  函数在代码内进行联机扩展,当代码执行时,这些保存和恢复操作旅游活动会再发生,而且函数调用的执
  行速度也会大大加快。函数的联机扩展会产生较长的代码,所以只应该内联对应用程序性能有显著影响的
  函数以及长度较短的函数。
  3、新增数据类型
  _Bool
  值是0或1。C99中增加了用来定义bool、true以及false宏的头文件夹,以便程序
  员能够编写同时兼容于C与C++的应用程序。在编写新的应用程序时,应该使用
  头文件中的bool宏。
  _Complex and _Imaginary
  C99标准中定义的复数类型如下:float_Complex; float_Imaginary; double_Complex;
  double_Imaginary; long double_Complex; long double_Imaginary.
  头文件中定义了complex和imaginary宏,并将它们扩展为_Complex和_Imaginary,
  因此在编写新的应用程序时,应该使用头文件中的complex和imaginary宏。
  long long int
  C99标准中引进了long long int(-(2e63 - 1)至2e63 - 1)和unsigned long long int(0 - 2e64
  - 1)。long long int能够支持的整数长度为64位。
  4、对数组的增强
  可变长数组
  C99中,程序员声明数组时,数组的维数可以由任一有效的整型表达式确定,包括只在运行时才能确定
  其值的表达式,这类数组就叫做可变长数组,但是只有局部数组才可以是变长的。
  可变长数组的维数在数组生存期内是不变的,也就是说,可变长数组不是动态的。可以变化的只是数组的大小。
  可以使用*来定义不确定长的可变长数组。
  数组声明中的类型修饰符
  在C99中,如果需要使用数组作为函数变元,可以在数组声明的方括号内使用static关键字,这相
  当于告诉编译程序,变元所指向的数组将至少包含指定的元素个数。也可以在数组声明的方括号内使用
  restrict,volatile,const关键字,但只用于函数变元。如果使用restrict,指针是初始访问该对象的惟一途
  径。如果使用const,指针始终指向同一个数组。使用volatile没有任何意义。
  5、单行注释
  引入了单行注释标记 "//" , 可以象C++一样使用这种注释了。
  6、分散代码与声明
  7、预处理程序的修改
  a、变元列表
  宏可以带变元,在宏定义中用省略号(…)表示。内部预处理标识符__VA_ARGS__决定变元将在何
  处得到替换。例:#define MySum(…) sum(__VA_ARGS__) 语句MySum(k,m,n);
  将被转换成:sum(k, m, n); 变元还可以包含变元。例: #define compare(compf, …)
  compf(__VA_ARGS__) 其中的compare(strcmp,"small", "large"); 将替换成:
  strcmp("small","large");
  b、_Pragma运算符
  C99引入了在程序中定义编译指令的另外一种方法:_Pragma运算符。格式如下:
  _Pragma("directive")
  其中directive是要满打满算的编译指令。_Pragma运算符允许编译指令参与宏替换。
  c、内部编译指令
  STDCFP_CONTRACT ON/OFF/DEFAULT 若为ON,浮点表达式被当做基于硬件方式处理的独立
  单元。默认值是定义的工具。
  STDCFEVN_ACCESS ON/OFF/DEFAULT 告诉编译程序可以访问浮点环境。默认值是定义的工具。
  STDC CX_LIMITED_RANGE ON/OFF/DEFAULT 若值为ON,相当于告诉编译程序某程序某些含
  有复数的公式是可靠的。默认是OFF。
  d、新增的内部宏
  __STDC_HOSTED__ 若操作系统存在,则为1
  __STDC_VERSION__ 199991L或更高。代表C的版本
  __STDC_IEC_599__ 若支持IEC 60559浮点运算,则为1
  __STDC_IEC_599_COMPLEX__ 若支持IEC 60599复数运算,则为1
  __STDC_ISO_10646__ 由编译程序支持,用于说明ISO/IEC 10646标准的年和月格式:
  yyymmmL
  8、for语句内的变量声明
  C99中,程序员可以在for语句的初始化部分定义一个或多个变量,这些变量的作用域仅于本for语
  句所控制的循环体内。比如:
  代码:
  for(int i=0; i<10; i++){
  // do someting …
  }
  9、复合赋值
  C99中,复合赋值中,可以指定对象类型的数组、结构或联合表达式。当使用复合赋值时,应在括弧
  内指定类型,后跟由花括号围起来的初始化列表;若类型为数组,则不能指定数组的大小。建成的对象是
  未命名的。
  例: double *fp = (double[]) {1.1, 2.2, 3.3};
  该语句用于建立一个指向double的指针fp,且该指针指向这个3元素数组的第一个元素。 在文件
  域内建立的复合赋值只在程序的整个生存期内有效。在模块内建立的复合赋值是局部对象,在退出模块后
  不再存在。
  10、柔性数组结构成员
  C99中,结构中的最后一个元素允许是未知大小的数组,这就叫做柔性数组成员,但结构中的柔性数
  组成员前面必须至少一个其他成员。柔性数组成员允许结构中包含一个大小可变的数组。sizeof返回的这
  种结构大小不包括柔性数组的内存。包含柔性数组成员的结构用malloc()函数进行内存的动态分配,并且
  分配的内存应该大于结构的大小,以适应柔性数组的预期大小。
  11、指定的初始化符
  C99中,该特性对经常使用稀疏数组的程序员十分有用。指定的初始化符通常有两种用法:用于数组,
  以及用于结构和联合。用于数组的格式:[index] = vol; 其中,index表示数组的下标,vol表示本数组
  元素的初始化值。
  例如: int x[10] = {[0] = 10, [5] = 30}; 其中只有x[0]和x[5]得到了初始化。用于结构或联
  合的格式如下:
  member-name(成员名称)
  对结构进行指定的初始化时,允许采用简单的方法对结构中的指定成员进行初始化。
  例如: struct example{ int k, m, n; } object = {m = 10,n = 200};
  其中,没有初始化k。对结构成员进行初始化的顺序没有限制。
  12、printf()和scanf()函数系列的增强
  C99中printf()和scanf()函数系列引进了处理long long int和unsigned long long int数据类型
  的特性。long long int 类型的格式修饰符是ll。在printf()和scanf()函数中,ll适用于d, i, o, u 和x
  格式说明符。另外,C99还引进了hh修饰符。当使用d, i, o, u和x格式说明符时,hh用于指定char
  型变元。ll和hh修饰符均可以用于n说明符。
  格式修饰符a和A用在printf()函数中时,结果将会输出十六进制的浮点数。格式如下:[-]0xh, hhhhp
  + d 使用A格式修饰符时,x和p必须是大写。A和a格式修饰符也可以用在scanf()函数中,用于读取
  浮点数。调用printf()函数时,允许在%f说明符前加上l修饰符,即%lf,但不起作用。
  13、C99新增的库
  C89中标准的头文件
   定义宏assert()
   字符处理
   错误报告
   定义与实现相关的浮点值勤
   定义与实现相关的各种极限值
   支持函数setlocale()
   数学函数库使用的各种定义
   支持非局部跳转
   定义信号值
   支持可变长度的变元列表
   定义常用常数
   支持文件输入和输出
   其他各种声明
   支持串函数
   支持系统时间函数
  C99新增的头文件和库
   支持复数算法
   给出对浮点状态标记和浮点环境的其他方面的访问
   定义标准的、可移植的整型类型集合。也支持处理最大宽度整数的函数
   首先在此1995年第一次修订时引进,用于定义对应各种运算符的宏
   支持布尔数据类型类型。定义宏bool,以便兼容于C++
   定义标准的、可移植的整型类型集合。该文件包含在中
   定义一般类型的浮点宏
   首先在1995年第一次修订时引进,用于支持多字节和宽字节函数
   首先在1995年第一次修订时引进,用于支持多字节和宽字节分类函数
  14、__func__预定义标识符
  用于指出__func__所存放的函数名,类似于字符串赋值。
  15、其它特性的改动
  放宽的转换限制
  限制             C89标准  C99标准
  数据块的嵌套层数       15     127
  条件语句的嵌套层数      8      63
  内部标识符中的有效字符个数  31     63
  外部标识符中的有效字符个数  6      31
  结构或联合中的成员个数    127    1023
  函数调用中的参数个数     31     127
  不再支持隐含式的int规则
  删除了隐含式函数声明
  对返回值的约束
  C99中,非空类型函数必须使用带返回值的return语句。
  扩展的整数类型
  扩展类型 含义
  int16_t 整数长度为精确16位
  int_least16_t 整数长度为至少16位
  int_fast32_t 最稳固的整数类型,其长度为至少32位
  intmax_t 最大整数类型
  uintmax_t 最大无符号整数类型
  对整数类型提升规则的改进
  C89中,表达式中类型为char,short int或int的值可以提升为int或unsigned int类型。
  C99中,每种整数类型都有一个级别。例如:long long int 的级别高于int, int的级别高于char等。在表达式中,其级别低于int或unsigned int的任何整数类型均可被替换成int或unsigned int类型。


C99标准和C89标准的区别?

1、增加restrict指针C99中增加了公适用于指针的restrict类型修饰符,它是初始访问指针所指对象的惟一途径,因此只有借助restrict指针表达式才能访问对象。restrict指针指针主要用做函数变元,或者指向由malloc()函数所分配的内存变量。restrict数据类型不改变程序的语义。如果某个函数定义了两个restrict指针变元,编译程序就假定它们指向两个不同的对象,memcpy()函数就是restrict指针的一个典型应用示例。C89中memcpy()函数原型如下:代码:void *memcpy (void *s1, const void *s2, size_t size);如果s1和s2所指向的对象重叠,其操作就是未定义的。memcpy()函数只能用于不重叠的对象。C99中memcpy()函数原型如下:代码:void *memcpy(void *restrict s1, const void *restrict s2,size_t size);通过使用restrict修饰s1和s2 变元,可确保它们在该原型中指向不同的对象。2、inline(内联)关键字内联函数除了保持结构化和函数式的定义方式外,还能使程序员写出高效率的代码。函数的每次调用与返回都会消耗相当大的系统资源,尤其是当函数调用发生在重复次数很多的循环语句中时。一般情况下,当发生一次函数调用时,变元需要进栈,各种寄存器内存需要保存。当函数返回时,寄存器的内容需要恢复。如果该函数在代码内进行联机扩展,当代码执行时,这些保存和恢复操作旅游活动会再发生,而且函数调用的执行速度也会大大加快。函数的联机扩展会产生较长的代码,所以只应该内联对应用程序性能有显著影响的函数以及长度较短的函数。3、新增数据类型_Bool值是0或1。C99中增加了用来定义bool、true以及false宏的头文件夹,以便程序员能够编写同时兼容于C与C++的应用程序。在编写新的应用程序时,应该使用头文件中的bool宏。_Complex and _ImaginaryC99标准中定义的复数类型如下:float_Complex; float_Imaginary; double_Complex;double_Imaginary; long double_Complex; long double_Imaginary.头文件中定义了complex和imaginary宏,并将它们扩展为_Complex和_Imaginary,因此在编写新的应用程序时,应该使用头文件中的complex和imaginary宏。long long intC99标准中引进了long long int(-(2e63 - 1)至2e63 - 1)和unsigned long long int(0 - 2e64- 1)。long long int能够支持的整数长度为64位。

美容和化妆有什么不同?

1、定义美容是一种改变原有的不良行为和疾病(面部),使之成为文明的、高素质的、具有可以被人接受的外观形象有活动和过程,或为达到此目的而使用的产品和方法。化妆是运用化妆品和工具,采取合乎规则的步骤和技巧,对人体的面部、五官及其他部位进行渲染、描画、整理,增强立体印象,调整形色,掩饰缺陷,表现神采,从而达到美化视觉感受的目的。2、效果美容通过专业的、科学的、系统的养生调理手段,达到激发人体自身内在的潜能,唤醒生命密码,产生生理、心理的平衡和谐,达到预防疾病、增强体质、颐养生命和美容驻颜功效,促进身心健康的一种综合的养生保健美容的系统方法。化妆能表现出人独有的审美情趣,表达个性,增添魅力。成功的化妆能唤起人心理和生理上的潜在活力,增强自信心,使人精神焕发,还有助于消除疲劳,延缓衰老。扩展资料:化妆技巧:1、遮瑕膏遮瑕膏可以帮助我们遮盖肌肤上较为显眼的瑕疵,比如痘痘、色斑或是黑眼圈,但你要记得,遮瑕膏可以用在眼袋部位,但千万不要涂抹在上下眼睑处,否则很容易造成后续的眼妆不够服帖或是让眼部肌肤产生干纹。2、粉饼多数粉底都是用来定妆,它能吸附肌肤上多余的皮脂,使之前的妆前产品和粉底更加服帖。粉饼具有控油的效果,所以如果肌肤比较干,只在T区和下巴部位使用就可以,不要用在脸颊等肌肤干燥部位。参考资料来源:百度百科-美容百度百科-化妆人民网-每个女人都应该知道的9个化妆技巧

C89标准和C99标准C11标准的区别

  C99相对C89的区别:
  1、增加restrict指针
  C99中增加了公适用于指针的restrict类型修饰符,它是初始访问指针所指对象的惟一途径,因此只
  有借助restrict指针表达式才能访问对象。restrict指针指针主要用做函数变元,或者指向由malloc()函
  数所分配的内存变量。restrict数据类型不改变程序的语义。
  如果某个函数定义了两个restrict指针变元,编译程序就假定它们指向两个不同的对象,memcpy()
  函数就是restrict指针的一个典型应用示例。C89中memcpy()函数原型如下:
  代码:
  void *memcpy (void *s1, const void *s2, size_t size);  如果s1和s2所指向的对象重叠,
  其操作就是未定义的。memcpy()函数只能用于不重叠的对象。C99中memcpy()函数原型如下:
  代码:
  void *memcpy(void *restrict s1, const void *restrict s2,size_t size);  通过使用restrict
  修饰s1和s2 变元,可确保它们在该原型中指向不同的对象。
  2、inline(内联)关键字
  内联函数除了保持结构化和函数式的定义方式外,还能使程序员写出高效率的代码。函数的每次调用与
  返回都会消耗相当大的系统资源,尤其是当函数调用发生在重复次数很多的循环语句中时。一般情况下,当发
  生一次函数调用时,变元需要进栈,各种寄存器内存需要保存。当函数返回时,寄存器的内容需要恢复。如果该
  函数在代码内进行联机扩展,当代码执行时,这些保存和恢复操作旅游活动会再发生,而且函数调用的执
  行速度也会大大加快。函数的联机扩展会产生较长的代码,所以只应该内联对应用程序性能有显著影响的
  函数以及长度较短的函数。


标准C语言(C99或者C11)有复数浮点类型吗?

C99 有 复数浮点类型,头文件:
#include
#include
可用:
double complex z1 = 1.0 + 3.0 * I;

double complex z2 = 1.0 - 4.0 * I;


printf("Starting values: Z1 = %.2f + %.2fi\tZ2 = %.2f %+.2fi\n",
creal(z1), cimag(z1), creal(z2), cimag(z2));


可用:
double complex s;
s = z1 + z2;

s = z1 * z2;

s = z1 / z2;

s = conj(z1);


MS VC++ 编译器 尚不支持 C99, (也无计划 去 支持C99).
学C/C++的时候 都是 自己定义 和写 复数。也不难。


苹果头C89的电流符合范围是多少?

电流为1A。介绍:一、iphone充电器的标准输出电压是5V,5V电压是可以使用的。iPhone 用的是聚合物锂离子电池,充电电压为5V,充电电流有1A的也有其数值的,具体要看是什么型号的。二、如果长期用非标输出电压/电流的电源给手机充电,对电池的影响很难估量。电压/电流不够,会令充电时间加长,而且很难充满,电压电流过高,容易过充及导致电池寿命下降,还有可能损坏手机。输出电压与电流值数据来自原装充电器。平时充电,最好还是用原装的充电器,尽量少用第三方的电源。


c89是什么,c语言中的一类吗

C89指的是C语言1989年发布的一款规范。这是最早的C语言规范,也就是ANSI C语言规范。
C语言最初的标准是在1989年,ANSI发布的第一个完整的C语言标准——ANSI X3.159—1989,简称“C89”,不过更常见的名称为“ANSI C”。
C89在1990年被国际标准组织ISO(International Organization for Standardization)一字不改地采纳,ISO官方给予的名称为:ISO/IEC 9899,所以ISO/IEC9899: 1990也通常被简称为“C90”。
1999年,在做了一些必要的修正和完善后,ISO发布了新的C语言标准,命名为ISO/IEC 9899:1999,简称“C99”。
在2011年12月8日,ISO又正式发布了新的标准,称为ISO/IEC9899: 2011,简称为“C11”。

每一个版本的规范都是在上一个版本增加一些新的特性,所有版本向下兼容。也就是说,按照新版本编写的代码在旧版本上可能无法编译,而旧版本的代码在新版本上编译运行则不会出现任何问题。
目前主流的C语言教材,均是以C89作为基础编写的。


c语言新标准相对c99有哪些变化

1. 对齐处理操作符 alignof,函数 aligned_alloc(),以及 头文件 。见 7.15 节。
2. _Noreturn 函数标记,类似于 gcc 的 __attribute__((noreturn))。例子:
_Noreturn void thrd_exit(int res);
3. _Generic 关键词,有点儿类似于 gcc 的 typeof。示例代码:
4. 静态断言( static assertions),_Static_assert(),在解释 #if 和 #error 之后被处理。例子:
_Static_assert(FOO > 0, "FOO has a wrong value");
5. 删除了 gets() 函数,C99中已经将此函数被标记为过时,推荐新的替代函数 gets_s()。
6. 新的 fopen() 模式,(“…x”)。类似 POSIX 中的 O_CREAT|O_EXCL,在文件锁中比较常用。
7. 匿名结构体/联合体,这个早已经在 gcc 中了,我们并不陌生,定义在 6.7.2.1 p13。
8. 多线程支持,包括:_Thread_local,头文件 ,里面包含线程的创建和管理函数(比如 thrd_create(),thrd_exit()),mutex (比如 mtx_lock(),mtx_unlock())等等,更多内容清参考 7.26 节。
9. _Atomic类型修饰符和 头文件 ,见 7.17 节。
10. 带边界检查(Bounds-checking)的函数接口,定义了新的安全的函数,例如 fopen_s(),strcat_s() 等等。更多参考 Annex K。
11. 改进的 Unicode 支持,新的头文件 等。
12. 新增 quick_exit() 函数,作为第三种终止程序的方式,当 exit() 失败时可以做最少的清理工作(deinitializition),具体见 7.22.4.7。
13. 创建复数的宏, CMPLX(),见 7.3.9.3。
14. 更多浮点数处理的宏 (More macros for querying the characteristics of floating point types, concerning subnormal floating point numbers and the number of decimal digits the type is able to store)。
15. struct timespec 成为 time.h 的一部分,以及宏 TIME_UTC,函数 timespec_get()。


本子里有 c87 c89之分,这是什么意思

c87就是comiket87,第82届comiket c81同理Comiket是日本最大的同人志展会,全称Comic Market(コミックマーケット),是由Comic Market准备会举办的日本以至全球最大型的同人志即卖会。略称Comiket(コミケ)或 CM。展会主要以动画、漫画、游戏、小说、周边的自费出版物的贩卖和展示为主要运营形式。与会者由企划参与者、读者和普通参与者三大群体构成,为同人志活动的推广起到了至关重要的作用。


上一篇:银弹的枪剑姬

下一篇:爆破拆除城市