#include<stdio.h> void main() { int p,a=5; if(p=a!=0) printf("%d\n",p); else printf("%d\n",p+2); }

如题所述

条件 可以写成: if(p=(a!=0)) 这样看得清楚。
里面是 赋值语句,(a!=0) 为真,真就是 1,(假才是 0)。
p得1 ,条件真, 所以 执行 printf("%d\n",p); 打印出 1。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-09-17
a!=0返回1,因为p=a,所以p=1,if(p=1)为真,所以输出:1.追问

为什么a!=0返回为1呀。。有点搞不懂

第2个回答  2012-09-17
1

#include<stdio.h> void main() { int p,a=5; if(p=a!=0) printf("%d...
条件 可以写成: if(p=(a!=0)) 这样看得清楚。里面是 赋值语句,(a!=0) 为真,真就是 1,(假才是 0)。p得1 ,条件真, 所以 执行 printf("%d\\n",p); 打印出 1。

...main() { int p,a=5; if(p=a!=0) printf("%d\\n",p); else printf...
if( p = a != 0 ) \/\/ 由于 != 的优先级比 = 的优先级要高,所以先运算 a != 0 因为 a = 5,所以 a != 0为真,即 a != 0的结果为 1 然后执行 p = 1 p = 1 不是一个逻辑表达式,只是一个赋值语句,所以应该是将 p 的值作为判断的依据,如果 p 为 0 则为 假, p 不为 ...

void main() { int p,a=5; if(p=a!=0) printf("%d\\n",
输出是1。第一句if (p=a!=0)中由于!=比=的优先级高,所以先执行a!=0==>5!=0得到一个true的布尔量值为1。接着执行p=1,使p的值变成了1,下一步执行if的判断,由于p为1,所以条件满足,执行printf("%d\\n",p),最后结果为1。

...main() { int p, a=5; if (p=a!=5); printf("%d\\n",p); else prin...
main(){ int p = 0;\/\/(变量要初始化!!!)int a = 5;if(p!=a)printf("%d\\n",p);else printf("%d\\n",p+2);}

有以下程序#include<stdio.h> main() { int c[6]={10,20,30,40,50,6...
c[5]与c[0]的地址之差(以int的存储空间大小为单位),所以是5。若想得到所期望的50,就该是二个单元存储的值的差。此时的输出语句应该写为:include<stdio.h> main(){ int c[6]={10,20,30,40,50,60},*p,*s;p=a; s=&c[5];printf("%d\\n",*s-*p);} ...

有以下程序#include <stdio.h> main() { int a[5]={2,4,6,8,10},*p...
首先p是一个变量,在*(p++)后p变量的值变化了,p变量的值指向数组中的a[1]即4,但是p的地址没有变,即k仍然指向p,所以k就可以通过p访问到a[1] = 4了。也就是刚开始k--->p--->a[0],在执行*(p++)后变成k--->p--->a[1];...

#include <stdio.h> int main(void) { int * p; int i = 5; p = &...
include <stdio.h> main(){ int * p; \/\/这里使用前最好初始化 *p = NUll;int i = 5;p = & i;\/\/这是什么,郁闷,这是 将i的地址付给p,也可以叫做将p指向 i的地址 printf("p=%d\\n",*p);\/\/这里*p输出的是p指向地址的值i,但他并不是p本身,p自身存放的是地址 \/\/如果想...

#include <stdio.h> void main() { int i, a[5]; int *p=a; for (i...
include <stdio.h> \/\/这个是头文件 void main() \/\/这个是主函数 { int i, a[5]; \/\/定义一个变量,一个数组;int *p=a; \/\/这句话的意思就是取数组的首地址类似于 p=&a[0];for (i=0; i<5; i++,p++ ) \/\/对i变量的控制使他的值小于数组的长度5。p++...

#include<stdio.h> main() { int a[5],i ; int *p=a,t; for(i=0;i<...
你的程序不全,你试试这个程序吧。scanf的接收标准输入流的参数必须是一个地址。include<stdio.h> void main(){ int a[5],i,max;for(i=0;i<5;i++)scanf("%d",&a[i]);for(i=1,max=a[0];i<5;i++)if(max<a[i])max=a[i];for(i=0;i<5;i++)printf("a[%d]=%d\/n",...

#include<stdio.h> main() { int *p,a[5],i p=a for(i=0;i<5;i++...
不对的 要写成a[i]或者用*(p+i)(a+i)这样都可以 a[0]+i只是a[0]的值加上i而已。

相似回答