include<stdio.h>void main(){ printf("表达式 3/2 的结果为%d\n", 3/2);} 结果分析:在C语言中,表达式具有类型和值两个属性。对表达式 3/2 而言,类型为整型,而值就是两个整型数相除的结果,为1
逻辑运算,结果只有0和非0,非0即为1.而参与逻辑运算的数值,同样是判断0或非0,所有非0数值都是按照1来处理。
意思是对于除法/,如果被除数和除数都是整数,进行的是整除,会直接丢弃小数部分,结果是整数。所以,3/2=1。
也就是说,(double)(3/2);这里应用到如下几个知识点。1 数值常量的默认类型。在没有特殊标识情况下,整型的数值常量,如题目中的3和2,都会默认为int型。2 整型的除法。对于整型之间的运算,包括加减乘除模除等,结果都同样是整型值。在这里是int/int=int,而除法得到的小数部分,会被无条件舍去...
凡有浮点参加的运算,一律转换为double型再运算,所以3.0/2和3/2.0运算时,都是3.0/2.0=1.5 建议你看下C语言的类型转换规则。C语言隐式类型转换规则 C语言规定,不同类型的数据需要转换成同一类型后才可进行计算,在整型、实型和字符型数据之间通过类型转换便可以进行混合运算(但不是所有类型之间...
3 的二进制 011 2 的二进制 010 3|2的含义就是如下计算规则:011 010 = 011 所以结果是3.该或运算符的含义是,只要两个计算数在该二进制位上有一个为1,计算结果该位就位1.
逻辑非运算符!的优先级比赋值运算符=高,所以a=3!=2等价于a=(3!=2),3!=2这个表达式值为1(真),所以a=1。圆括号()的优先级比逻辑非运算符!高,所以(a=3)!=2则先给a赋值3,再比较a与2,所以等价于a!=2,即3!=2,所以整个表达式为1,但a=3。
3%2 就是 3 除以 2 的余数,为1 C语言中 非0 为真,0为假!显然,3%2==0的值 为 假
i=3/2,3*2;就相当于(i=3/2),3*2;最后i等于1,而整个逗号表达式的值是6。要将i赋值为6,得用括号:i=(3/2,3*2);这些,可以用以下代码加以验证:include <stdio.h> int main(){ int i,n,arr[10]={0};n=1 ? i=3/2,3*2 : 0;printf("%d %d\n",i,n);arr[i=3/2,3...
int只保留整数,四舍五入也在整数部分起作用,3除2为1.5,去掉小数部分为1。float保留小数点后六位,四舍五入在小数部分起作用,一直到小数部分第七位是6四舍五入