c语言如何表示一个非数?

Python021

c语言如何表示一个非数?,第1张

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

}