[C.C++] 【C语言基础】编译并运行第一个C程序

88 0
Honkers 前天 20:48 来自手机 | 显示全部楼层 |阅读模式

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持!
博主链接

博客内容主要围绕:
       5G/6G协议讲解
       高级C语言讲解
       Rust语言讲解



编译并运行第一个C程序

       这篇博客中,我将介绍C语言编程的全部内容,主要覆盖以下C语言的内容,包括:

  • 编写您的第一个程序;
  • 修改您的程序以改变其输出;
  • 理解main()函数;
  • 使用printf()函数输出信息;
  • 添加注释提高程序的可读性

这篇博客主要会使用下面的示例进行讲解:

  1. #include <stdio.h>
  2. int main (void)
  3. {
  4. printf ("Programming is fun.\n");
  5. return 0;
  6. }
复制代码

在C语言中,小写字母和大写字母是不同的。此外,在C语言中,从一行中的哪个位置开始输入是无关紧要的,也就是说您可以在该行的任何位置开始输入语句。利用这一点,你可以开发出更易于阅读的程序。制表符(Tab键)经常被程序员用作一种方便的缩进方式。

一、编译上面的程序

       上面的C语言程序,首先需要将它输入到一个文件中。您可以使用任何文本编辑器来完成上面的任务。Unix用户通常使用vi或emacs等编辑器。C语言编译器能够识别以字符.c结尾的文件名作为C语言程序。假设您将上述程序输入到一个名为 prog1.c 的文件中。接下来,您需要编译这个程序。使用GNU C编译器,只需简单地在终端中输入gcc命令和上述文件名,如下所示:

  1. $ gcc prog1.c
  2. $
复制代码

       如果您使用的是标准的Unix C编译器,则使用的命令是cc而不是gcc。在这里,输入的文本以粗体显示。如果从命令行编译C语言程序,则美元符号是命令提示符。在你的终端中实际的命令提示符可能不是美元符号。如果在你的程序中有任何输入错误,在输入 gcc 命令后编译器会列出这些错误,通常编译器会指出程序中这些错误所在的行号。相反,如果出现了另一个命令提示符(如上例所示),则表示程序中没有发现错误。当编译器编译并链接您的程序时,它会创建一个可执行版本的程序。当使用GNU或标准C语言编译器时,这个程序默认被命名为a.out;而在Windows下,它通常被命名为a.exe。

二、运行上面的程序

       现在可以通过在命令行中输入可执行文件的名字来运行它:

  1. $ a.out
  2. Programming is fun.
  3. $
复制代码

如果出现如下错误提示“a.out: No such file or directory”,则可能意味着当前目录不在您的PATH中。 您可以将其添加到PATH或在命令提示符处键入内容“./a.out”

您也可以在程序编译时为可执行文件指定一个不同的名称。这可以通过使用-o(字母O)选项,并在后面添加可执行文件的名称来实现。例如:

  1. $ gcc prog1.c –o prog1
复制代码

上面的命令行会编译 prog1.c 程序,并将可执行文件输入到文件 prog1 中,随后只需指定其名称即可执行:

  1. $ prog1
  2. Programming is fun.
  3. $
复制代码

三、如何理解上面的程序

       程序的第一行 #include 应该写在每个程序的起始行,它告诉编译器有关稍后在程序中使用的 printf()输出函数的信息。

       程序中下一行代码 int main (void) 告诉系统,程序的名称是 main(),它返回一个整数,缩写为“int”。main()是一个特殊的名称,明确指出了程序从哪里开始执行。紧跟在main()后面的左括号和右括号指明main()是一个函数的名称。括在圆括号中的关键字 void 表示函数main()没有参数。既然现在系统已经确定了main(),那么就可以进一步说明这个函数要执行的操作了。这是通过将函数的所有程序语句放在一对大括号内来实现的。包含在大括号内的所有程序语句都被系统视为main()函数的一部分。在上面的程序中,只有两条这样的语句。这条语句明确说明要调用一个名为 printf() 的函数。传递给 printf() 函数的参数是字符串 “Programming is fun.\n”

        printf()函数是C语言标准库中的一个函数,它只是在屏幕上打印或显示它的参数。字符串中的最后两个字符,即反斜杠(\)和字母n,合在一起统称为换行(newline)符。顾名思义,换行符就是告诉系统进行换行。在换行符之后打印的所有字符都会出现在显示器的下一行。实际上,换行符在概念上类似于打字机上的回车键。

       C语言中的所有程序语句都必须以英文分号(;)结束。这就是为什么printf()调用的右括号后面紧跟着分号的原因。

       语句 return 0; 是main()函数中的最后一条语句,它表示已经完成main()的执行,并将状态值0返回给系统。这里可以使用任何整数。按照惯例,0表示程序成功地完成了,即没有遇到任何错误。可以使用不同的数字来表示发生的不同类型的错误(例如找不到文件)。其它程序(例如Unix shell)可以测试这个退出状态,看看程序是否成功运行。

       现在您已经完成了对第一个程序的分析,您可以修改它以显示短语 And programming in C even more fun。这可以通过再添加一条对printf()函数的调用来实现,例如下面的程序:

  1. #include <stdio.h>
  2. int main (void)
  3. {
  4. printf ("Programming is fun.\n");
  5. printf ("And programming in C is even more fun.\n");
  6. return 0;
  7. }
复制代码

四、显示变量的值

       下面程序的第一个C程序语句将变量sum声明为整数类型。C语言要求所有的程序变量必须在声明之后才能在程序中使用。变量的声明告诉C编译器,程序将如何使用一个特定的变量。编译器需要这些信息来生成正确的指令,以便在变量中存取值。声明为 int 类型的变量只能用于保存整型值,也就是说,没有小数点的值。整数值的例子有3、5、−20和0。带有小数位的数被称为浮点数,例如3.14、2.455和27.0都是浮点数。

  1. #include <stdio.h>
  2. int main (void)
  3. {
  4. int sum;
  5. sum = 50 + 25;
  6. printf ("The sum of 50 and 25 is %i\n", sum);
  7. return 0;
  8. }
复制代码

       声明变量sum之后的语句是 sum = 50 + 25;,这条程序语句读起来和它在其它大多数编程语言表示的含义一样,将数字50与数字25相加,并将结果通过赋值运算符,即等号(=)存储在变量sum中。

       现在上面程序中的printf()函数在括号中增加了两个参数。这些参数用逗号分隔。printf()函数的第一个参数总是要显示的字符串。不过,除了显示字符串之外,你可能还经常希望显示某些程序变量的值。在这个例子中,你希望将变量 sum 的值显示在字符 “The sum of 50 and 25 is” 之后。printf()函数的第一个参数中的百分号字符(%)是printf()函数可以识别的特殊字符。紧跟在百分号后面的字符指定了在该点显示什么类型的值。在前面的程序中,printf()函数认为字母 i 表示要显示一个整数值。只要printf()函数在字符串中找到 %i 字符,它就自动显示printf()函数的下一个参数的值。因为sum是printf()的下一个参数,所以它的值会自动显示在字符串 “the sum of 50 and 25 is ” 之后。下面再来看一个显示多个变量的值的程序:

  1. #include <stdio.h>
  2. int main (void)
  3. {
  4. int value1, value2, sum;
  5. value1 = 50;
  6. value2 = 25;
  7. sum = value1 + value2;
  8. printf ("The sum of %i and %i is %i\n", value1, value2, sum);
  9. return 0;
  10. }
复制代码

五、注释

       程序中用注释语句来注解一个程序,以提高程序的可读性。正如下面的示例中看到的,注释的作用是告诉程序的读者(程序员或负责维护程序的其他人),当程序员在编写某一特定程序或特定语句序列时他是如何想的。

  1. /* This program adds two integer values
  2. and displays the results */
  3. #include <stdio.h>
  4. int main (void)
  5. {
  6. // Declare variables
  7. int value1, value2, sum;
  8. // Assign values and calculate their sum
  9. value1 = 50;
  10. value2 = 25;
  11. sum = value1 + value2;
  12. // Display the result
  13. printf ("The sum of %i and %i is %i\n", value1, value2, sum);
  14. return 0;
  15. }
复制代码

       在C语言程序有有两种方法来插入注释:

  • 第一种注释可以由两个字符 / 和 * 发起。这标志着注释的开始。这种类型的注释必须明确终止。要终止这种注释,需要在注释的结尾使用字符 * 和 /,且不能在 * 和 / 之间嵌入任何空格。包含在开始的 /* 和结束的 */ 之间的所有字符都被视为注释语句的一部分,C语言编译器会忽略这些字符。当注释在程序中跨越多行时,通常使用这种形式的注释;
  • 第二种向程序中添加注释的方式是使用两个连续的斜线字符 //。从这两个斜线到该行结尾的所有字符都会被编译器忽略。

       在程序中恰当地使用注释语句再怎么强调也不为过。很多时候,一个程序员回看他6个月前编写的程序,却沮丧地发现,他可能一辈子都记不起某个特定函数或一组特定语句的目的。在程序的特定位置插入一个简单的注释语句,也许会节省大量时间,而不必再浪费时间去重新思考函数或语句集的逻辑。

       养成在编写或键入程序时插入注释语句的习惯,这是一个很不错的主意。这里有很多理由。首先,在你还记忆犹新的时候为程序添加注释,要比在程序完成后再回头重新思考逻辑来添加注释要容易得多。其次,通过在开发的早期阶段向程序中插入注释,在调试阶当程序的逻辑错误被隔离和调试时,您也可以从这些注释中受益,此时。注释不仅可以帮助您通读程序,还可以帮助您指出逻辑错误的来源。最后一个理由是,我还没有发现任何一个程序员是真正喜欢为程序添加注释的。事实上,在调试完程序后,你可能不会喜欢回到程序中插入注释。在开发程序时插入注释,可以让这个有时很乏味的任务变得更容易忍受一些。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行