c++ if语句的问题

char *p;
if ((p = getenv("USER")))
printf("USER = %s\n", p);
这是一个小程序 if语句貌似在上面没有起到什么作用呀,另外最后 输出p 的值,还是地址呢。用数字测试的结果printf 最后输出的是地址。但是这个程序为啥能输出正确的系统环境变量信息呢???希望各位高手帮帮小弟吧
1

if语句中判断p是否为空;
%s输出的是以'\0'结尾的字符串;追问

中间那个是赋值,是对的,既然是赋值为啥会有比较功能呢?。

追答

它这里是赋值之后再判断;
相当于,
char *p = nullptr;
p = getenv("USER");
if (p)
printf("USER = %s\n", p);

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-12-06
if(trun)
所以if()里面的“=”,要改成“==”追问

他这个程序是对的,中间要是字符串就没法输出正确的结果了呀

c++里面if语句的问题
如果你的程序没少逗号的话,应该是运行的时候 你输入二个数据是 按空格分隔的。scanf 空格后面的数据不接收。你输入两个数据C只按一个数据接收 也就形成了你说的问题。运行时数据中间用,分隔。或者将语句scanf("%d,%d",&x,&y);改成scanf("%d%d",&x,&y); 用空格分隔 ...

c++ if 语句
在C++编程中,if语句的使用遵循特定规则。首先,明确指出在if语句与执行语句之间不能插入逗号。在编程规范与数学表达式的写作中,逻辑判断的多个条件复合通常需要通过逻辑符号连接。这些符号包括:逻辑与操作符"&&"、逻辑或操作符"||"以及逻辑非操作符"~"。例如,如果需要表达"1等于1且x也等于1"的逻辑判...

c\/ c++为什么if不能用else
1、先说结论:说明你的else是独立的。2、出错原理:c语言里,有if不一定有else,但是有else一定要有相对应的if。3、解决方法:这种情况你往前推一下,所有的else能不能跟相应的if对应,很容易就找到了。4、良好习惯:虽然c语言不要求通过tab或者space来区分上下级关系,但是要养成良好书写习惯,比如说...

c++if判断语句的问题
你的 if 语句有问题, 把 = 改成 ==, 你的是赋值, 在第一个 if 语句中, 先做了 c='+'; 的赋值, 所以每次都会计算加法, 还有 第四个if语句改成 if(c=='\/' && b!=0), 就可以正常运行了.建议把常量写在左边,这样下次就不会犯这种错误了 ...

C++if语句问题
else if(x = 10)这一句是不对的,判断语句里面的是赋值语句了,所以if的判断结果是真,输出y=5;应该改为else if(x==10).

c++ if语句的问题
首先,你这个写的是C,而不是C++,但是大多数C++的编译器是兼容C的。你在第一个if语句里边外围的判断是a==b,那么当你输入数据之后,只有当a==b的时候,才会读取该语句,并显示“相等”除此之外的所有可能都读取下边的else语句,也就是说,只要你的a b不相等都是读取的判断大于的语句。用C++...

C++中for语句内if的问题
如果s[i]是大写字母,第一个if不运行,经过第二个if转化为小写 如果s[i]是小写字母,第一个if运行,并将小写转化为大写,但程序继续运行,走到第二个if,满足条件,又将转化好的大写字母重新转化回小写了,所以出现了,你所说的情况 解决办法:将第二个if改为else if ...

C++ if()括号中是不是只能有一个条件?
if()括号中可写多个条件。你这里可以写成if(a<1 && a<100)&&表示“且”,不过这么写没意义,a<1了必定小于100啊。if()中可以写多个条件,不同条件用&&(并且)、||(或者)、!(否定)连接。&&优先级高于||。比如:if(a>1 && a<100)表示a大于1且小于100;if(a<1 || a>100)表示a...

c++中if的问题
if(c<=0)w=a-b;} } else t=c;cout <<s <<',' <<w <<','<<t <<endl;} 这样看就明白了吧,如果满足if条件就进入if语句块内执行,否则跳出if向下执行。有时候你只要把括号加上就能很清晰了 百度这个界面不支持空格和tab键,你把程序粘到一个文本文档里将格式设置为标准缩进的,就会看...

C++简单问题,关于IF判断
if语句里面写错了 应该把 if(h=true) 改成两个“=”连写, if(h==true) 。后面的同理,你都写成了一个“=”希望对你有帮助。

相似回答