注释和变量声明

一、注释(Comment)

格式:/* 注释内容 */

  • 编译器忽略 /**/ 之间所有字符;
  • 可以放在空格、制表符、换行能出现的任意位置;
  • 不支持嵌套注释/* 注释/* 注释内容 */内容 */ 像这样嵌套 会报错
  • 作用:解释代码,提升可读性。

最早先出现多行注释,后来版本才有单行注释

C99 新增单行注释 //

单行注释,就是从 //开始 到这一行的行尾 都会被注释

示例
/* print Fahrenheit-Celsius table
   for fahr = 0, 20, ..., 300 */

// int a = 12; 单行注释 Code language: C++ (cpp)

二、变量声明 Declaration

规则
  1. C语言变量必须先声明,后使用
  2. 传统C:声明集中放在函数开头、所有执行语句之前;
  3. 声明格式:类型 变量名1, 变量名2;
基础数据类型
类型含义简要说明
int整型保存整数;常见16位 / 32位
float单精度浮点数保存带小数的数值
char字符型单字节字符
short短整型占用空间 ≤ int
long长整型占用空间 ≥ int
double双精度浮点数精度高于float

注意:各类类型占用字节依赖机器平台,没有统一固定大小。

示例
int age, num;       // 声明两个整型变量
float lower,price,salary;// 声明浮点变量Code language: C++ (cpp)

三、赋值语句 Assignment

说明
  • =赋值运算符,数学不等于;
  • 每条语句以分号 ;结尾;
  • 作用:把右侧表达式的值存入左侧变量。
示例
num = 10;
price = 30;
salary = 2000;
age = num;Code language: C++ (cpp)

四、while 循环

语法
while(条件表达式) {
    循环体语句;
}Code language: C++ (cpp)
执行流程
  1. 计算括号内条件
  2. 条件为真:执行大括号内循环体;
  3. 条件为假:循环终止,执行循环后面代码;
  4. 重复1~3。
注意点
  1. 循环体多条语句必须加大括号 {}
  2. 只有一条语句时可以省略大括号:
while (i < j)
    i = i * 2;Code language: C++ (cpp)
  1. 缩进仅方便人类阅读,编译器不关心空格,但工程必须规范缩进。
例子

下面是一个经典的例子,是一个温度的转换代码,是C语言创始人的书本中的例子

公式如下:

𝑪=59(𝑭32)\boldsymbol{C=\frac{5}{9}(F-32)}
#include <stdio.h>

/* 华氏度转摄氏度 整数版本 */
int main()
{
    // 变量声明
    int fahr, celsius;
    int lower, upper, step;

    // 初始化
    lower = 0;
    upper = 300;
    step = 20;
    fahr = lower;

    // while循环主体(你给出的代码段)
    while (fahr <= upper) {
        celsius = 5 * (fahr - 32) / 9;
        printf("%d\t%d\n", fahr, celsius);
        fahr = fahr + step;
    }

    return 0;
}Code language: C++ (cpp)

执行结果

假设你的源码放在C:\cdemo\hello.c里面

C:\cdemo>gcc hello.c -o hello.exe

C:\cdemo>hello
0       -17
20      -6
40      4
60      15
80      26
100     37
120     48
140     60
160     71
180     82
200     93
220     104
240     115
260     126
280     137
300     148Code language: CSS (css)

五、算术表达式

1. 整数除法规则

两个int相除叫: 整数除法,直接截断小数部分(舍去小数,不是四舍五入)

5 / 9     // 两边都是int → 结果 0
9 / 5     // 结果 1Code language: C++ (cpp)

注意一点,除法的时候,要注意如果两边是整数,则结果可能和你不一样,C语言对于两边都是整数int的除法,会去掉结果的小数部分的。

celsius = 5 * (fahr - 32) / 9;   // ✅可行
celsius = (5/9) * (fahr - 32);   // ❌错误!5/9直接得到0Code language: C++ (cpp)
2. 浮点运算规则

常量带有小数点 5.09.0浮点常量(float/double)

把5 和9 换成浮点数float类型,那么除法的结果就会保留小数部分,这就和我们预想的一样了,结果就更真实了。

5.0 / 9.0    // 浮点数除法,得到约0.55555Code language: C++ (cpp)
3. 隐式类型转换(混合运算)

当运算符一边int、一边float:
int 自动转换成浮点数,再进行浮点运算

fahr - 32;
// fahr是float,则32(int)自动转为32.0参与运算Code language: C++ (cpp)

浮点版本正确写法:

celsius = (5.0 / 9.0) * (fahr - 32.0);Code language: C++ (cpp)

六、printf 格式化输出函数

重点:printf 不属于C语言核心关键字,是标准库函数,需要 #include <stdio.h>

标准库是官方写好的代码,你可以直接使用。

printf("格式字符串", 参数1, 参数2, ...);Code language: JavaScript (javascript)

格式字符串内 % 是占位符,用来替换后面参数。

常用格式说明符
格式符含义例子输出效果
%d十进制整数printf("%d", 20)20
%3d占3字符宽度整数,右对齐20
%f浮点数默认输出6位小数
%3.0f总宽度3,0位小数20
%6.1f总宽度6,1位小数-17.8
%6.2f宽度6,2位小数20.50
%o八进制
%x十六进制
%c单个字符
%s字符串
%%输出一个 %
示例
printf("%3.0f %6.1f\n", fahr, celsius);Code language: C++ (cpp)
注意事项

占位符数量、类型必须和后面参数一一匹配,否则输出错误结果。
\t 制表符,\n 换行符。

七、两个版本温度转换

1:整数运算(精度丢失)
#include <stdio.h>
main()
{
    int fahr, celsius;
    int lower, upper, step;
    lower = 0;
    upper = 300;
    step = 20;
    fahr = lower;
    while (fahr <= upper) {
        celsius = 5 * (fahr-32) / 9;
        printf("%3d %6d\n", fahr, celsius);
        fahr = fahr + step;
    }
}Code language: C++ (cpp)

缺点:整数除法截断,0°F 输出 -17,真实值 -17.8

执行结果

  0    -17
 20     -6
 40      4
 60     15
 80     26
100     37
120     48
140     60
160     71
180     82
200     93
220    104
240    115
260    126
280    137
300    148

2:浮点运算(精度更高)

#include <stdio.h>
main()
{
    float fahr, celsius;
    float lower, upper, step;
    lower = 0;
    upper = 300;
    step = 20;
    fahr = lower;
    while (fahr <= upper) {
        celsius = (5.0/9.0) * (fahr - 32.0);
        printf("%3.0f %6.1f\n", fahr, celsius);
        fahr = fahr + step;
    }
}Code language: C++ (cpp)

执行结果

  0  -17.8
 20   -6.7
 40    4.4
 60   15.6
 80   26.7
100   37.8
120   48.9
140   60.0
160   71.1
180   82.2
200   93.3
220  104.4
240  115.6
260  126.7
280  137.8
300  148.9Code language: CSS (css)

摄氏度转华氏度

转换公式:

F=95C+32F = \frac{9}{5}C + 32
#include <stdio.h>
main()
{
    float celsius, fahr;
    float lower, upper, step;
    lower = 0;
    upper = 100;
    step = 10;
    celsius = lower;
    printf("Celsius Fahr\n");
    while (celsius <= upper) {
        fahr = celsius * 9.0 / 5.0 + 32.0;
        printf("%3.0f %6.1f\n", celsius, fahr);
        celsius = celsius + step;
    }
}Code language: C++ (cpp)
Previous:
Next:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注