龙空技术网

其实C语言本身并不复杂,为什么还会有那么多人看到C语言就头疼?

程序员古耕 14287

前言:

此时大家对“c语言版本是什么意思”大致比较重视,兄弟们都想要剖析一些“c语言版本是什么意思”的相关资讯。那么小编同时在网摘上搜集了一些有关“c语言版本是什么意思””的相关知识,希望小伙伴们能喜欢,同学们一起来学习一下吧!

其实C语言本身并不复杂,为什么还会有那么多人看到C语言就头疼?原因很简单,那就是你今天写的C语言,明天可能换个IDE就编译不了了!

拿最简单的For循环来说吧,一般,我们写For循环的时候是不是会这么写:

for(int i = 0;i< 10;i++){……}

几乎见到的所有编程语言都支持这个写法,当然有些脚本语言会这么写:

for i in range(0, 10)……

这种写法比较另类,咱就不说了。

单说C语言的for循环,有时候直接按照上面的那种写法,可能连编译都编译不过去!因为C语言存在着很多标准,每个标准所支持的语法格式可能都不一样。

像for(int i = 0;i<10;i++)这种写法,是C语言的C99标准,在此标准下编译,这种写法是支持的,但是,如果你不小心以C89标准去编译,就会编译报错了!

原因是C89标准的变量声明必须在函数开头,因此,for循环中的i相当于在使用时才被定义,因此在C89标准下,这种写法是编译不过去的!会报一个错误,大致错误为:

‘for’ loop initial declarations are only allowed in C99 mode

很多长时间不写C语言的程序员,遇到这个问题就蒙了,不知道怎么回事,其实只需要在编译时指定为C99或者C11标准来编译即可:

gcc -std=c99 ****.c

而C89标准的for循环写法应该是这样:

int i;for(i = 0;i<10;i++){……}

也就是所有变量在使用前必须预先定义在函数开头,而不是需要用到一个变量的时候我们再定义。

比如像这种写法,C89标准也是不允许的:

int i = 10;if(i == 10){……}int x = 1;

原因是变量x没有声明在函数开头,修正后的写法应该是这样的:

int i =10;int x;if(i == 10){……}x = 1;

是不是觉得这样特别麻烦?所以,C语言在C99和C11版本中取消了变量必须声明在函数之前的这个限制,相对来说就比较自由了!

但虽然C99和C11版本的C语言更加灵活,但是我印象中我当初所学的C语言版本还是C89版本的,并且有不少人在学C语言的时候因为没有在意所学的C语言标准,就会感觉很乱,有时候明明照着书上的代码敲出来的示例却无法正确运行,或者本来可以运行,但是过两天环境变了就不行了等等。

所以,这就是为什么现在大多数人都愿意学C++而不愿意再去学C语言的原因,虽然,C++被很多程序员也认为是非常糟糕的一门编程语言,但是,它是遵循C语言标准,但是看起来比C语言更加灵活的一门编程语言了!

标签: #c语言版本是什么意思