C语言学习笔记

来源:互联网 发布:淘宝好评返现处罚通知 编辑:程序博客网 时间:2024/04/30 10:33

.数据类型

C语言数据类型分为基本类型,构造类型,指针类型和空类型.其中基本类型又分为整型,字符型,实型和枚举举型;构造类型分为数组类型,结构类型和联合类型.

注意求余运算时,余数与被除数同符号,都为整数,35%8=3, 35%(-8)=3, (-35)%8=-3,只能用于整型量.自增和自减运算只能用于变量,不能用于常量或表达式.由于C语言编译程序尽可能自左向右将更多的运算符组成一个运算符,故r=w+++1;等价于r=w+++1

逗号运算符号:”表示用逗号隔开多个表达式/语句,先求出各个表达式的值,结果为最后一个表达式的值,如z=1020+390);则z的值为90。逗号表达式--使用逗号运算符号将两个表达式连接起来的式子。逗号表达式是把若干个表达式串联起来,最大特点在于它可以在一条语句中整合多种不同类型的表达式,用一条语句实现多个功能,printf("%d/n", ~i), i++, printf("%d", i);

<<,>>分别表示将数据按位左移、右移指定二进制位。对于右移操作,如果左操作数是负数,则移位后空出的位置被填充符号位。左移位 exp1<<exp2的表达式使得exp1的位被按expr2指明的数目进行左移,并在低端移入0. 移位运算的两个运算数必须是整形表达式,在运算数的两边完成整形提升,表达式整体的类型与提升后的左运算数相同。右移位运算符>>与左移位运算符是不对称的。对左操作数进行移位取决于左操作数的类型:

1)如果左操作数是无符号(或带符号的非负数),则左边移入0

2)如果左操作数是带符号的负数,则实现者可以选择补0或者把左操作数最左边的位移入(常见的是填充符号位)。因此,左操作数为负的带符号数值,而右操作数为非0时,>>的应用是不可移植的。如果右操作数是负数,则移位运算(左移和右移)的结果是未定义的。如果右操作数的值大于或等于左操作数的宽度(位数),则结果也是未定义的。如果右操作数为0,则结果等于左操作数。

字符常量用单引号括起来,字符串用双引号括起来,字符串包括一个结尾字符’/0’。在C语言中有三种转义字符字符:一般转义字符、八进制转义字符和十六进制转义字符。一般转义字符虽然在形式上由两个字符组成,但只代表一个字符。常用的一般转义字符为/n,/b;八进制转义字符由反斜杠”/”和随后的1~3个八进制数字构成的字符序列,例如/60,/141;十六进制转义字符由反斜杠和字母x及随后的1~2个十六进制数字构成的字符序列。

转义字符中只能使用小写字母,每个转义字符只能看作一个在C程序中使用转义字符/ d d d或者/ x h h可以方便灵活地表示任意字符。/ d d d为斜杠后面跟三位八进制数,该三位八进制数的值即为对应的八进制A S C I I码值。/ x后面跟两位十六进制数,该两位十六进制数为对应字符的十六进制A S C I I码值。

1.        当不确定某种类型所占内存大小的时候,保险起见可以使用sizeof(类型、or类型变量),当是类型变量的时候可以省略括号;

2.        c/c++规定int为机器字长,这样可以取得最大的执行效率。32位机上int,long (int)4字节,short2个字节,long long8个字节,float4个字节,double8字节,long double12字节。short的长度小于等于int长度,long大于等于int长度;

3.        整型在没有明确写出是有无符号的时候默认是signed的,char的正负取决于编译器,并且所占大小也不一定是1Byte

4.        C语言中位运算的对象可以是字符和整数。类型不同时,运算数右端对齐,再将位低的数向高位扩充。无符号数和正整数左侧用0补全;负数左侧用1补全;然后对位数相等的两个运算数,按位进行运算。

5.        类型混用时C 会自动把它们转换成同一种类型。在任何涉及两种数据类型的操作中,它们之间等级较低的类型会被转换成等级较高的类型。char short 类型的值,无论有符号还是无,都会自动转换成 int 或者 unsigned int. 进行赋值操作时右边的数据类型必须转换成左边的类型,若右边的数据类型的长度大于左边,则进行截断或舍入操作。若运算数中有doublefloat,则其他转换成double类型运算。若运算数中最长的类型为long型.则其他类型转换成long型数。

6.        使用逗号表达式的值作为结果时,最好把逗号表达式统一括起来(逗号运算符优先级最低),这样不易出错,且理解起来更方便.

.输入输出

C语言本身不提供收入输出语句,其输入和输出操作是由其编译系统提供的库函数来实现的,最基本的输入输出函数有printf(),scanf(),getchar(),putchar(),gets(),puts().

格式输出函数,格式:printf(“格式控制字符串” [,输出项表]);该函数具体包括以下功能:1.可以指定对不同类型的数据输出;2.给数据类型指定长度修正说明;3.指定输出数据的域宽和精度;4.给输出数据添加需要的说明性字符;5.为输出数据给定对齐方式;6.根据数据的正负为输出数据项添加+-或空格。

printf()可以输出常量、变量和表达式的值,但格式控制中的格式说明符,必须按照从左向右的顺序,与输出项表中的每个数据一一对应,否则出错。格式字符xeg可以用小写字母,也可以用大写字母。使用大写字母时,输出数据中包含的字母也大写。除此之外,其他格式字符必须小写。

格式控制字符串也称转换控制字符串,可以包含3种字符:格式指示符,转义字符和普通字符。

格式指示符,形式为:%[标志][宽度][.精度][h|l][类型]

标志

意义

-

结果左对齐,右边填空格

0

用“0”进行前位填充

+

在有符号数之前输出前缀+

空格

输出值为正时冠以前缀空格,为负时冠以前缀负号

*

用作占位符

#

csdu类无影响;对0类,在输出时加0;对x类,输出时加ox;对egf类当结果有小数时才给出小数点

                         标志字符

宽度:用十进制整数类表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0

精度:精度格式符以“.”开头,后跟十进制整数。本项的意义是:如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度,则截去超过的部分。

长度:长度格式符分为hl两种,h表示按短整型量输出,l表示按长整型量输出。类型:类型字符用以表示输出数据的类型。

格式字符

意义

d

十进制输出(正数不输出符号)

O

八进制输出无符号整数(不输出前缀0

x,X

十六进制输出无符号整数(不输出前缀0x

 

详见:http://wenku.baidu.com/view/abed7ffe910ef12d2af9e76a.html

原创粉丝点击