夏青虫

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  • char数组类型

1. C没有为字符串定义专门的变量类型,而把它存在char数组中。

2. 字符串存储时通常以这个空字符\0结束,意味着数组的单元数必须至少比要存储的字符数多1,这个操作由系统完成。

3. 字符串常量"X"和字符常量'X'的区别:其实"X"由两个字符组成。

  • printf

1. 打印%符号,用%%标识

2. 字符宽度设置,和fortran有很大的区别,fortran是设置了最大宽度,超过就会显示*,而C是超过了会自动调整,例如:

#include <stdio.h>
#define PAGES 732
int
main(void) { printf("*%d*\n", PAGES); //默认生成与要打印的整数同宽度的字段。 printf("*%2d*\n", PAGES); //如果设定的字段不能容纳要打印的数,字段会自动扩展以适应数字的长度。 printf("*%10d*\n", PAGES); //否则产生设定长度的字段。 printf("*%5.3d**%05.3d*", 6, 6); //.3将产生足够多的前导0填满要求的最小数字位数;同时使用0和.那么0会忽略掉
}

输出结果:

*732*
*732*
*       732*
*  006**  006*

3. 对于字符串来说,格式说明符.5表示只能打印5个字符,其他用空格填充。

4. 当被用作printf()的参数时, float被转换成double。

5. 拆分字符串,可以采用printf(“abdc"  "aasdf");中间用空白字符连接,也可用于换行。

  • scanf

1. 如果是读取某种基本变量类型,请在变量名前加&;如果是将字符串读进一个字符数组中,请不要使用&。

2. 使用空白字符(空格、换行、制表)作为分割。

3. 转换说明字符与printf几乎相同。主要区别在于printf把%f,%e,%E,%g,%G同时用于float和double,而scanf只把它们用于float,而用于double时要求使用l修饰符,例如%lf, %le等。

4. *修饰符在printf和scanf中的不同

int width = 6;
int precision = 3;
int number = 100;
float weight = 24.5;

printf("%*d\n", width, number);
//提供宽度
printf("%*.*f\n", width, precision, weight);
//提供宽度和精度
int n;

scanf("%*d %*d %d", &n);
//此时,输入3个数,前两个数会被跳过
//如果程序需要读取一个文件中的某一特定列,会有用

5. 一个例子

假定有输入行:   -13.45e12# 0

如果使用%d,scanf会读取3个字符(-13)并在小数点处停止,将小数点作为下一个输入字符;

如果使用%f,scanf会读取-13.45e12并在#处停止;

如果使用%s,scanf会读取-13.45e12#并在空格处停止。

6. scanf会把读入的东西先写入buffer里,然后按照格式取出,如果你第一个scanf读入了两个东西,例如abc cd,那第二个scanf就会取出cd。

  • sizeof运算符和size_t类型 

sizeof是以字节为单位返回其操作数的大小,size_t通过创建别名的机制,来选择适合的类型。例如:

size_t intsize;
intsize = sizeof(int);
printf("%zd bytes", intsize);
  • 类型转换

1. 当出现在表达式中时,将char型自动转换成int;

2. 当作为函数参数传递时,char会被转换为int,float会被转换为double;

3. 另外可以指派运算符,例如:(int) 1.6,(float) 1。

  •  ++a和a++

当n++是表达式的一部分时,可以认为它表示”先使用n;然后再将它的值增加“;

当++n是表达式的一部分时,可以认为它表示”先将n的值增加;然后再使用它“;

  • C风格的读循环-成功读入某一类型的数
while(scanf("%ld", &num) == 1)
{
    //loop actions
}
  • =和==

如果进行比较的双方有一个是常量,可以把它放在左边,例如: 5 == a,这样如果写成5=a可以被编译器识别。

  • 运算优先级(从高到低)

( ) W - + ++  -- sizeof (type) W * / % W + - W < > <= >= W == != W =

  • for循环

1. 第一个表达式在循环开始的时候执行一次;第二个表达式在每次循环之前都要进行求值,若假则循环结束;第三个表达式在每次循环结束时进行计算。

  • 逗号运算符

保证最左边的表达式最先计算,整个表达式的值是右边表达式的值,例如:x = (1, 2);得到x==2,而且逗号的优先级要小于=,所以a=1, 2等价于a=1;2;

posted on 2013-04-09 13:08  夏青虫  阅读(243)  评论(0编辑  收藏  举报