随笔 - 56, 文章 - 0, 评论 - 0, 引用 - 0
数据加载中……

运算符、表达式、语句

1、赋值是从右到左进行的,例如:
 1#include<stdio.h>
 2int main()
 3{
 4    int jane,tarzan,cheeta;
 5    
 6    cheeta=tarzan=jane=68;
 7    printf("cheeta=%d tarzan=%d jane=%d \n",cheeta,tarzan,jane);
 8    
 9    return 0;
10}
显示结果为:
1cheeta=68 tarzan=68 jane=68


2、优先级
增量和减量运算符有很高的优先级;只有圆括号比它们的优先级高。所以x*y++代表(x)*(y++)而不是(x*y)++。
n=(y+n++)*6,只有当使用了n之后,n的值才增加。优先级告诉我们++只属于n,而不属于y+n。

3、语句
 声明语句  int toes;
 赋值语句  toes=12;
 函数调用语句 printf("%d\n",toes);
 结构化语句  while(toes<20) toes=toes+2;
 空语句   ;
 复合语句  在花括号里的语句
 
4、类型转换

 1#include<stdio.h>
 2int main()
 3{
 4    char ch;
 5    float fl;
 6    int i;
 7    
 8    fl=i=ch='C';                                                          //1
 9    printf("ch=%c fl=%2.2f i=%d\n",ch,fl,i);                    //2
10    ch=ch+1;                                                            //3
11    i=fl+2*ch;                                                           //4
12    fl=2.0*ch+i;                                                        //5      
13    printf("ch=%c,i=%d,fl=%2.2f\n",ch,i,fl);                   //6
14    
15    return 0;
16}
显示结果为:
1ch=C fl=67.00 i=67
2ch=D,i=203,fl=339.00
解释:
1-2:字符'C'被作为1字节的ASCII值存储在ch里。整数变量i接受'C'转换过来的整数位67,以4个字节存储。最后fl接受67.00.
3和5:1为整型,占4个字节,ch为字符型,转为int型,占4个字节,然后与1相加并把结果的最后一个字节截下来存储在ch中。
3和5:为了和2相乘,ch的值被转换为一个4字节的整数68.乘积整数(136)为了和fl相加而被转换为浮点型。结果(203.00f)
   被转换为int类型并存储在i中。
4和5:为了和2.0相乘,ch的值68被转换为浮点型。为了做加法,i被转换为浮点型。结果339.00被存储在fl中。

posted on 2011-03-09 21:50 八路 阅读(196) 评论(0)  编辑 收藏 引用 所属分类: C primer 易错点


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理