#C语言学习笔记#运算符、表达式和语句

运算符、表达式和语句

基本运算符:

基本运算符种类有+、-、*、/。没有指数运算符,#pow函数用于指数运算。eg:pow(3.5,2.2) 是3.5的2.2次方。
语句(bmw = 2002)中“=”并不是“等于”,意义是将2002赋值给变量bmw。#C中没有平方函数,可用(x*x)来表达x的平方。
需要特别注意的是除去运算符“/”,整数除法的结果是整数,同理浮点数也是。因此7 / 4得出的结果也会是整数(C语言把结果的小数部分丢弃了,该过程称为“截断(truncation)”)。这种情况下可用7. / 4. 的表达来解决问题。

#include<stdio.h>
int main (void)
{ 
    printf("integer division: 7/4 is %d \n",7/4);
    printf("floating division: 7./4. is %1.2f \n",7./4.);

    return 0;
}

运算符优先级:

x = 25.0+60.0*6/2;
上面的语句中,C会优先计算60.0*6/2,然后再将结果加上25.0。如果想让加法运算在乘法运算前执行,只需这样做:
x = (25.0+60.0*6)/2;

其他运算符:

第一个运算符是sizeof运算符。sizeof用于运算数据对象或类型的字节大小,(其返回类型为size_t)如果运算对象是类型则必须用圆括号括起来,建议都用圆括号括起来以防错误。

#include<stdio.h>
int main(void)
{
    int n = 0;
    size_t intsize;
    intsize = sizeof(int);
    printf("%d,%zd,%zd.",n,sizeof(n),intsize);\*%zd是size_t的转换说明。*\

    return 0;
}

第二个是求摸运算符%用于整数运算,例如13%5得3,3是余数,该函数实际上十分有用,我也不知道为什么。(只能用于整数运算)负数求模如何进行?在C99有一个规定,即第一个数为负数,则结果为负数;若第一个数为正数,则结果为正数。
-11%5得-1,11%-5得1.

第三个是递增运算符++,其有两种模式,一种是前缀模式:++super;另外一种是后缀模式:ultra++。相同功能是将运算对象递增1,不同的是,前缀模式是先增加1再赋值;后缀模式是先赋值再加1。

#include<stdio.h>
int main(void)
{
    int x,y;
    int a,b = 1;
    x = ++a;\*使用a之前,递增a。*\
    y = b++;\*使用b之后,递增b。*\
    printf("%d,%d."x,y);

    return 0;
}

运算结果将会是  2 , 1 .
如上所述,++a(前缀模式)是a先加了1,再赋值给x即x=2;而b++(后缀模式)是b先赋值给y即y=1,再加1。

第四个是递减运算符- -,其性质和用法和递增运算符基本一样,不在这里多说。

第五个是强制类型转换运算符(),能把某个数据类型转换成你想要的数据类型。使用方法是在某个量的前面放置用括号括起来的类型名eg:y = (int)1.6 + (int)1.7;。

需要注意的是,递增或递增运算符很容易出错,因为我们不知道编译器的运算顺序,可能从左到右也有可能从右到左,所以需要注意以下一点。#如果一个变量出现在一个函数的多个参数中或一个变量多次出现在一个表达式中,不要使用递增或递减运算符!

表达式和语句:

表达式由运算符和运算对象组成,然后一些表达式包含着许多子表达式。eg:c/d是a*(b+c/d)的子表达式,abcd是运算对象。每个表达式都有一个值,简单表达式的值不需多说,但是有赋值运算符的表达式的值与所赋予的值相同(如表达式q = 5*2的值是10)。那么不等式的q > 3值是什么呢?这种表达式的值不是1就是0,成立为1,不成立为0。

语句是C程序的基本构建块,一条语句相当于一条完整的指令。语句分为赋值表达式语句(toes = 12;)、函数表达式语句(printf(”%d”,x);)和空语句。

复合语句(块)指用花括号括起来的一条或多条语句。

/*程序段1*/
index = 0whileindex++ < 10)
    sam = 10 * index + 2;
printf("sam = %d",sam);
/*程序段2*/
index = 0;
while (index++ < 10)
{
    sam = 10 * index + 2;
    printf("sam = %d",sam);
}

程序段1中while循环只有一条赋值表达式语句,没有花括号;而程序段2中有花括号,整个复合语句被视为一条语句。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值