2025年6月26日

基于win10,启用wsl调用乌班图模块,想调试需要安装gcc,安装前需进行,可以考虑使用清华源。

sudo apt update
sudo apt install gcc

cursor编写c程序,运行方法为gcc 2.c,也可以gcc 2.c -o hello 后面可以是任意命名,-o意为输出,不加会输出a.out文件,通过./运行即可,如./a.out ./hello等。

stdio.h是标准库,需声明,如#include(stdio.h)

如需加注释之类,可以通过/* sdasd */来做,

几个比较常用的,有\n换行,

C 语言中常用的循环结构有三种:

while循环

   while (条件) {
       // 循环体
   }

for循环

for (初始化; 条件; 更新) {
// 循环体
}
类型典型字节数主要用途取值范围(有符号)
char1字符/小整数-128 ~ 127
short2小范围整数-32768 ~ 32767
long4 或 8大范围整数-2,147,483,648 ~ 2,147,483,647 (4字节)
double8高精度小数约 ±1.7E-308 ~ ±1.7E+308

在 C 语言中,写 100000L 这种形式,最后加的那个大写 L,表示这个常量是 long 类型(长整型常量)。


详细解释

  • 默认情况下,像 100000 这样的数字常量在 C 语言里是 int 类型。
  • 如果你写 long l = 100000;,编译器会把 100000 当作 int 类型,然后赋值给 long 类型的变量,通常没问题,但有些情况下你可能需要明确告诉编译器“这是 long 类型的常量”。
  • 加上 L 或 l,比如 100000L 或 100000l,就表示这是一个 long 类型的整数常量。
格式符说明适用类型示例输出
%d十进制有符号整数int123, -456
%u十进制无符号整数unsigned int123, 456
%ld长整型(long)整数long1234567890
%lu无符号长整型整数unsigned long1234567890
%hd短整型(short)整数short12345
%f浮点型(float, double)float, double3.14, -0.001
%lf双精度浮点型(double)double3.1415926
%c单个字符charA, b, 1
%s字符串char[]hello, world
%x十六进制整数(小写字母)int, unsigned7b, ff
%X十六进制整数(大写字母)int, unsigned7B, FF
%o八进制整数int, unsigned173, 377
%%输出一个百分号%
%p指针地址指针类型0x7ffee3bff618

for 循环后面加不加分号,含义完全不同!


1. 不加分号(推荐写法)

for (fahr = 300; fahr >= 0; fahr = fahr - 20)
    printf("%3d %6.1f\n", fahr, 5*(fahr-32.0)/9);
  • 这种写法表示:for 循环控制 printf 这一行,每次循环都会执行一次 printf。
  • 这也是你想要的效果。

2. 加分号(不推荐,通常是错误)

for (fahr = 300; fahr >= 0; fahr = fahr - 20);
printf("%3d %6.1f\n", fahr, 5*(fahr-32.0)/9);
  • 这种写法,for 循环后面有一个分号,表示 for 循环的循环体是一个“空语句”。
  • 也就是说,for 循环什么都不做,只是让 fahr 变化,循环结束后才执行 printf。
  • 结果是:只会输出一次,输出的是循环结束后的 fahr 的值,而不是你想要的表格。

3. 多条语句时

如果 for 循环后面有多条语句,应该用大括号 {} 包起来:

for (fahr = 300; fahr >= 0; fahr = fahr - 20) {
printf("%3d %6.1f\n", fahr, 5*(fahr-32.0)/9);
// 其他语句
}

总结

  • for 循环后面不要随便加分号!
  • 如果只跟一条语句,不加分号,直接写那条语句。
  • 如果有多条语句,用大括号 {} 包起来。
  • 加了分号就变成空循环了,通常不是你想要的效果。

!= 的含义

  • != 是一个比较运算符,它的意思是“不等于”(Not Equal To)。
  • 所以 while (c != EOF) 这句代码的意思就是:当变量 c 的值不等于 EOF 时,就执行循环。

详细解释

  • ! (逻辑非):单独的 ! 是“逻辑非”运算符,用来取反一个布尔值(真或假)。例如,如果一个条件是“真”,! 之后就变成“假”。
  • == (等于):两个等号 == 是“等于”的比较运算符。例如 c == EOF 判断 c 是否等于 EOF。
  • != (不等于): ! 和 = 组合在一起,就成了“不等于”。c != EOF 就是判断 c 是否不等于 EOF。

您遇到的问题很典型,也是初学者经常会困惑的地方。直接在键盘上敲击 E、O、F 三个字母是无法让程序退出的。原因是,程序代码中的 EOF 并不是指’E’、’O’、’F’这三个字符的组合,而是一个由操作系统定义的、用来表示“输入流已结束”的特殊信号。getchar() 函数在接收到这个信号后,会返回一个特殊的值(在stdio.h中被定义为 EOF,通常是-1),这个值不对应任何一个实际的字符。

  • 在 Windows 系统上: 在新的一行按 Ctrl+Z,然后再按 Enter。
  • 在 Linux 或 macOS 系统上: 在新的一行按 Ctrl+D。

xusir
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇