c语言里面数据类型没有逻辑型,而是真用1表示,假用0表示,非0代表真,0代表假。所以!4就是假,%d输出就是0。
!a 的意思就是取反,非0的数就是真,0就是假,a=4,所以!a 以后值就为0了,如果想看值,就可以加个getchar();
编译器的问题.是输出0!a=!4=0(逻辑表达式只有真,假.就是1和0了.对假求反为真,同理,对真求反为假)
这一点以前真没有认真学习过,今天又学到一点了.