这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » C语言入门教程-更多变量知识

共1条 1/1 1 跳转至

C语言入门教程-更多变量知识

高工
2014-06-12 10:33:05     打赏

变量类型
C提供三种标准变量类型:

  • 整数类型:int
  • 浮点数类型:float
  • 字符类型:char

int表示整数,占4个字节;float表示浮点数,也占4个字节;char表示单个字符(如“a”或“3”),占1个字节;字符串被声明为字符数组。

C还提供如下派生类型:

  • double(8字节浮点数类型)
  • short(2字节整数类型)
  • unsigned short或unsigned int(非负整数,没有符号位)

运算符及其优先级
C中的运算符和大多数语言类似:

+  加
- 减
/ 除
* 乘
% 取模

/ 运算符在操作数都是整数的情况下执行整数除法运算,否则执行浮点数除法运算。例如:

void main()
float a;a=10/3;printf("%f\n",a);

上面这段代码将会打印出一个浮点数,因为a被声明为float。但由于执行的是整数除法运算,所以a的值是3.0。

C的运算符优先级和大多数语言的也很类似,即先乘除,后加减。5+3*4 的结果是17,不是32,因为*比+有更高的优先级。使用括号可以改变正常的优先级顺序:(5+3)*4的结果是32。因为在括号中5+3优先计算。我们后面还将遇到运算符优先级——引入指针后C的运算符优先级会变得复杂一些。

类型转换
C可以自动类型转换。特别是使用指针时需要经常这样做。某些类型间的赋值操作时也会发生类型转换。例如,上面的程序中整型数值被自动转换为浮点型。

显式类型转换时,将目的类型放在括号中,并放在要转换的数据之前。例如,在上面的程序中,将a=10/3;替换为a=(float)10/3;后会得到结果3.33333,因为10在做除法之前已被转换为浮点数了。

Typedef
使用C的typedef语句,用户可以声明自定义的类型。例如,下面代码定义了一个C程序中经常用到的类型:

#define TRUE 1
#define FALSE 0
typedef int boolean;

void main()
boolean b;b=FALSE;……

这段代码在C程序中声明布尔型的变量。

如果您不喜欢把实数的类型称为“float”,您可以这样写:
typedef float real;

然后就可以使用实数类型了:
real r1,r2,r3;

只要在使用之前定义,typedef 语句可以出现在C程序的任何地方。

结构体
在 C 语言中可以使用结构体把变量组织到一起。例如:

struct rec
int a,b,c;float d,e,f;;
struct rec r;

如上例所示,每当要声明rec型的结构体时,都要写struct rec。这条规定很容易被忘记。一旦您由于疏忽忘了写上struct,就会遇到很多编译错误。上面的代码可以缩减为下面的形式:

struct rec
int a,b,c;float d,e,f; r;

即用一个语句同时声明了rec类型和一个rec类型的变量r。您也可以使用typedef 语句定义结构体类型的名字。例如,如果您不喜欢每次声明一个结构体变量时都去写struct rec r,则您可以用:

typedef struct rec rec_type;

定义一个新类型,然后就可以声明rec_type类型的变量了:

rec_type r;

使用句点(.)访问结构体的成员。如r.a=5;。

数组
在一般变量声明的变量名后加上数组的大小即可声明一个数组,如下所示:

int a[10]; /* 整数数组 */
char s[100]; /* 字符数组(C 的字符串) */
float f[20]; /* 实数数组 */
struct rec r[50]; /* 结构体数组 */

增量

长记法       短记法
i=i+1; i++;
i=i-1; i--;
i=i+3; i += 3;
i=i*j; i *= j;


动手一试
试写几段代码研究一下类型转换和运算符优先级。考查对象包括int、char、float等。
创建一个结构体数组,然后编写一段代码,使其基于结构体的一个整型成员对结构体数组排序。

C 常见错误
如前所述,当使用/运算符计算两个整数时常常会得出意想不到的结果。用前请三思。


共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]