e=255f!=0
要解答这个问题,首先需要了解浮点数在计算机中的表示规则。
对于32位的浮点数,IEEE754规定,要有8位的阶码,23位的尾数,还有一位的符号位;
其中,尾数用原码表示,阶码用移码表示,(这里的移码不是通常我们认识的那个移码,它的偏移量是2^(n-1)-1,之所以如此规定也是考虑到求倒数不会溢出等等原因。阶码的最大值和最小值用来表示非规格数或者正负无穷。
当0<e<255,规格化数
当e=0f!=0非规格化数
当e=0f=0有符号位的0
当s=0e=225f=0正无穷
当s=1e=225f=0负无穷
e=255f!=0非数
C语言 "非" 运算 用 惊叹号表示。它是1目运算符,(即只需一个操作数的运算)。例如:int a=0, b
b= !a //这是把 非a 的结果 赋值给 b
printf("%d", b)
---
If( (i%2)==0){..}// 这句 是: 如果 “i是偶数”为真 则执行 {..}。
If( ! ((i%2)==0) ){..} // 这里加上了 非运算,如果 “i是偶数”为假 则执行 {..}。
[你写的 1 含语法错:]if(!(i%2)=0) 这里 的 = 是赋值号,语法错。
若是 if( !(i%2) == 0) 这里的 非 是 对 (i%2)运算, 即if( ( !(i%2)) ==0) {}这样 才是 正确的 “非”运算 。
注意, != 是另一个运算符,是二目运算符,叫 “不等于”,不同于 “非”运算。
if(i百分号2!=0) 这里不是 “非”运算。 是 “不等于”运算。
你的意思是你要连着输入5个字符,没有空格也没有换行?那你的输入方法用错了,因为%d的范围可以包括int类型的取之范围的,所以不管你输入多少位,系统永远认为你输入的是一个int,你可以用gets()呀,先获得连续的字符串,你就可以用a[i]<'0'||
a[i]>'9'来判断了,当然a[i]的类型是char类型的,如果不确定是几位,你可以定义char
a[100],到时候用strlen获得长度,a[strlen(a)]
=
'\0'就好啦
,随便写个程序给你看看吧
#include
<stdio.h>
#include
<string.h>
int
main()
{
char
a[100]
int
n
=
0
gets(a)
for(int
i
=
0
i
<
strlen(a)
i++)
{
if(a[i]
<
'0'
||
a[i]
>
'9')
{
n++
}
else
printf("%c",
a[i])
}
printf("\n%d\n",
n)
getchar()
return
0
}