c语言入门

最简单的c代码

1
2
#include <stdio.h> 
main() { printf("hello, world\n"); }

上面的代码就上经典的hello,world代码。

```用于告诉编译器在本程序中包含标准输入/输出库的信息。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

包含在`/*`与`*/`之间的字符序列上注释将被编译器忽略。

同时可以使用```#define NAME "rcx"```来定义符号常量。

#### 数据类型

C 语言只提供了下列几种基本数据类型:
- char 字符型,占用一个字节,可以存放本地字符集中的一个字符 - int 整型,通常反映了所用机器中整数的最自然长度 - float 单精度浮点型 - double 双精度浮点型
此外,还可以在这些基本数据类型的前面加上一些限定符。short 与 long 两个限定符用于限定整型: ```c short int sh;
long int ad; ``` 并且int可以被省略掉。
类型限定符 signed 与 unsigned 可用于限定 char 类型或任何整型。unsigned 类型的数总是正值或 0 ,并遵守算术模 2n 定律,其中 n 是该类型占用的位数。 字符串常量就是字符数组。字符串的内部表示使用一个空字符'\0'作为串的结尾,因此。存储字符串的物理存储单元数比括在双引号中的字符数多一个。 'x'与"x"是不同的。 前者是一个整数,其值是字母 x 在机器字符集中对应的数值(内部表示值);后者是一个包含一个字符(即字母 x)以及一个结束符'\0'的字符数组。 枚举常量是另外一种类型的常量。枚举是一个常量整型值的列表,例如: ```c enum boolean { NO, YES }; ``` enum 类型中第一个枚举名的值为 0,第二个为 1,依此类推。如果只指定了部分枚举名的值,那么未指定值的枚举名的值将依着最后一个指定值向后递增, 参看下面两个例子中的第二个例子:
```c
enum type {A='a', B='b', C='c'} enum months { JAN = 1, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC };
/* FEB 的值为 2,MAR 的值为 3,依此类推 */ ``` 任何变量的声明都可以使用 const 限定符限定。该限定符指定变量的值不能被修改。对数组而言,const 限定符指定数组所有元素的值都不能被修改。 const 限定符也可配合数组参数使用,它表明函数不能修改数组元素的值:

```c int strlen(const char[]); ``` #### 逻辑表达式
当关系表达式(如 i>j )以及由 &&、||连接的逻辑表达式的判定结果为真时,表达式的值为 1;当判定结果为假时,表达式的值为 0。因此,对于赋值语句
```c d = c >= '0' && c <= '9'

来说,当 c 为数字时,d 的值为 1,否则 d 的值为 0。

在 if、while、for 等语句的测试部分中,“真”就意味 着“非 0”,这二者之间没有区别。

类型转换

C 语言中,很多情况下会进行隐式的算术类型转换。一般来说,如果二元运算符的两个操作数具有不同的类型,那么在进行 运算之前先要把“较低”的类型提升为“较高”的类型,运算的结果为较高的类型。但是,如果没有 unsigned 类型的操作数,则只要使用下面 这些非正式的规则就可以了:

  • 如果其中一个操作数的类型为 long double,则将另一个操作数转换为 1ong double 类型;
  • 如果其中一个操作数的类型为 double,则将另一个操作数转换为 double 类型;
  • 如果其中一个操作数的类型为 float,则将另一个操作数转换为 float 类型;
  • 将 char 与 short 类型的操作数转换为 int 类型;
  • 如果其中一个操作数的类型为 long,则将另一个操作数也转换为 long 类型。

赋值运算符

i = i+2
/*则可以将这种表达式缩写为下列形式:*/
i += 2

大多数二元运算符都有一个相应的赋值运算符 op=,其中,op 可以是下面这些运算符之一:

+ - * / % << >> & ^ |

如果 expr1 和 expr2 是表达式,那么 expr1 op= expr2等价于:

expr1 = (expr1) op (expr2)

它们的区别在于,前一种形式 expr1 只计算一次。注意,在第二种形式中,expr2 两边的圆 括号是必不可少的,例如,

x *= y + 1
的含义是:
x = x * (y + 1)
而不是
x=x*y+1

—EOF—