默认情况下,C语言编译器gcc4.7.2不符合任何ANSI /ISO C标准。当前默认值等效于-std=gnu90,这是1989/1990标准,扩展名为GNU-specific。
如果要实现标准一致性,比如c89,c90,c99或c11,可以使用以下任意一种:
-std=c90 -pedantic
-std=c99 -pedantic
-std=c11 -pedantic
-std=c90也可以拼写为-ansi,-std=c89或-std=iso9899:1990。
-std=iso9899:199409支持C90
DevC++5.0开发工具配置C99标准C的方法如下:(输入以上某个标准对应的命令即可)
以下是测试各个标准的测试代码。
一、C89(C90)
C89(也称为C90)是C语言的最早版本的标准,于1989年发布。它定义了C语言的基本语法、关键字和数据类型,并引入了标准库函数,如stdio.h和stdlib.h等。C89的特点是简洁、可移植且易于理解,被广泛应用于各种计算机平台。
举例来说,下面的代码展示了使用C89标准编写的程序示例:
#include <stdio.h> int main() { printf("Hello, C89!\n"); return 0; }
在这个示例中,我们使用了C89标准的头文件 <stdio.h> 和函数 printf 来输出一条信息。
二、C99
C99标准于1999年发布,对C语言进行了扩展和改进。它引入了一些新特性,如变长数组、复合字面量、单行注释等。C99还提供了更灵活的变量声明和初始化方式,允许在代码中声明变量的同时进行初始化。
举例来说,下面的代码展示了使用C99标准引入的变长数组和复合字面量的示例:
#include <stdio.h> int main() { int n = 5; int arr[n]; // 变长数组 for (int i = 0; i < n; i++) { arr[i] = i + 1; } printf("Array: { "); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } printf("}\n"); return 0; }
在这个示例中,我们使用了C99标准引入的变长数组来定义数组 arr,其大小由变量 n 决定。同时,我们使用了复合字面量来在一行代码中初始化数组的元素。
三、C11
C11标准于2011年发布,是对C语言的又一次改进和扩展。它引入了一些新特性,如匿名结构体、泛型选择表达式、多线程支持等。C11还对一些现有特性进行了细微的改进和修正,提高了语言的表达能力和可靠性。
举例来说,下面的代码展示了使用C11标准引入的匿名结构体和泛型选择表达式的示例:
#include <stdio.h> int main() { struct { int x; int y; } point = { .x = 5, .y = 10 }; // 匿名结构体 _Generic(point, struct { int x; int y; }: printf("Point: (%d, %d)\n", point.x, point.y), default: printf("Invalid data type!\n")); // 泛型选择表达式 return 0; }
在这个示例中,我们使用了C11标准引入的匿名结构体来定义结构体变量 point,并使用了泛型选择表达式 _Generic 来根据变量的类型选择不同的操作。
四、C17
C17标准于2018年发布,是C语言的最新版本。C17主要是对C11标准的修订和更新,旨在进一步改进语言的特性和可用性。C17引入了一些新特性,如初始化宏、属性和线程局部存储等。
总结:
C语言的四套标准(C89、C99、C11和C17)代表了C语言的演进和改进过程。每个标准引入了新特性和改进,为程序员提供了更强大和灵活的编程工具。通过具体实例的说明,我们深入探讨了每个标准的特点和新特性,帮助你了解C语言的不同版本,并为你在实际编程中选择合适的标准提供了指导。
标签:std,int,Dev,C语言,标准,c++,printf,c11,C11 From: https://www.cnblogs.com/halesir88/p/17780787.html