printf-while(y--)是什么意思 求大神解答 谢谢

问题描述

while(y--)是什么意思 求大神解答 谢谢

#include
#include

int main()
{
int y=10;
while(y--);
printf("y=%dn",y);
return 0;
}
为什么它的结果是y=-1呢

解决方案

y是整型变量,在C语言中,整型变量也可以当做逻辑值处理,非0为真,0为假。while(y--);语句中注意后面的“;”,意思是当y--表达式为非0时循环继续,否则循环结束,最后y--表达式是先判断再减1

解决方案二:

后置的--运算符你可以认为是一个函数,其能够改变参数的值,他能使入参减1,但是返回值却是参数本身的大小,当然,在C中写不出这样的一个函数,C++可以如下
int fun(int &arg)
{
int tmp = arg;
arg = arg - 1;
return tmp;
}
当 y-- 等于0退出循环,此时 y 值为-1
另外可以这样思考,while(y--)等价于 while(y) y = y - 1;
因此最后 y = -1;

解决方案三:

while是先判断y等于0时,退出循环,但是y--后面有个自减,所以y就变成-1了

解决方案四:

改成下面的代码,看效果

while(y--)
{
printf("y=%dn",y);
}

解决方案五:

当y为0跳出循环且跳出循环后y-1,即为-1。

解决方案六:

同上,在C和C++中,非0为真,0为假,可以当作boolean类型来用,但是在JAVA中就不可以,整型就是整型,不可当作boolean来用,要注意

解决方案七:

--在后,先赋值运算在减1,--在前,先减在赋值运算

时间: 2024-09-13 00:27:14

printf-while(y--)是什么意思 求大神解答 谢谢的相关文章

tang-c++编程题,求大神解答............谢谢啦...........

问题描述 c++编程题,求大神解答............谢谢啦........... 在一个数组中首先判断里的自符是否为回文字符,如果是在按其长度排序,若相同长度的则按ASCII码排序(用c++)求大神解救....... 解决方案 花了一小时弄的,,,亲测. #include<iostream> using namespace std; bool judge(char *str); void sort(char *Selected[],int n); int Length(char *str

ios-如何卸载 Xcode 上的 IOS 模拟器 求大神解答 谢谢

问题描述 如何卸载 Xcode 上的 IOS 模拟器 求大神解答 谢谢 如何卸载 Xcode 上的 IOS 模拟器 求大神解答 谢谢.网上真心找不到 方法啊 解决方案 把Xcode下的模拟器路径中的sdk删掉就行了,Contents/Developer/Platforms/iPhoneSimulator.platform/Developer 解决方案二:

服务器-apache+tomcat集群问题,求大神解答 谢谢,在线等

问题描述 apache+tomcat集群问题,求大神解答 谢谢,在线等 apache+tomcat集群问题,服务器过一段时间后apache 不能处理动态请求, 用tomcat端口直接访问动态程序是正常的,通过apache 访问动态请求一直在打转, 但是重启tomcat后,又可以用Apache访问动态请求.求大神解答!! 谢谢,在线等 解决方案 http://zhidao.baidu.com/link?url=bxT37XG5Q1mHYLzTl1JLHyxFVuw7lK1ovGbqf6s6IyKF

cas-Cas 代理模式是不是一定要走https协议?求大神解答

问题描述 Cas 代理模式是不是一定要走https协议?求大神解答 cas代理模式回调无法获取pgtId 和pgtIou 请问代理模式,cas认证服务与cas代理端是不是都要采用https,才能通过? 求大神解答,谢谢. 解决方案 协议的代理模式---------------------- 解决方案二: http://www.coin163.com/java/docs/201309/d_2845038902.html

complex-关于c++中复数如何输出为dat文件,这个程序,如何输出,k,y[k] 急求!!!求大神解答

问题描述 关于c++中复数如何输出为dat文件,这个程序,如何输出,k,y[k] 急求!!!求大神解答 #include "math.h" #include #include #include using namespace std; void DFT(complex a[],complex b[],int N) { for (int k=0;k { b[k]=complex(0,0); for(int n=0;n { complexY = complex(0,(2*3.1415926

c语言-C语言版非递归马踏棋盘·死循环了·求大神解答·小弟新手求助

问题描述 C语言版非递归马踏棋盘·死循环了·求大神解答·小弟新手求助 这是出现死循环的代码bool solution(Move move, Pos &beginPos){ if(!move) { printf("solution Failed!"); return false; } int chessBoard[8][8] = {0}; push(move, beginPos); chessBoard[beginPos.mX][beginPos.mY] = 1; int ste

printf-c++简单问题,求大神解答

问题描述 c++简单问题,求大神解答 代码如下,结果输入了之后完全没有输出,完全不清楚什么状况,求解!!! #include #include #include #include float xyz;float InvSqrt(float x){ float xhalf = 0.5f*x; int i = (int)&x; i = 0x5f3759df - (i >> 1); x = (float)&i; x = x*(1.5f - xhalf*x*x); return x;}

新手求助C语言,求大神解答

问题描述 新手求助C语言,求大神解答 #include #include #include #include int main() { const int target; int min,max,count,guess; char c='Y'; srand(time(NULL)); while(1){ min=1; max=100; count=0; target=rand()%max+1; while(1){ guess=0; printf("输入一个数字 %d %dn",min,m

编程-我这代码怎么输出个0.0?求大神解答

问题描述 我这代码怎么输出个0.0?求大神解答 #include #include #include static int stnum; char hint[80]="请按提示输入!"; struct Score { double yuwen,math,english,tiyu,sum; }; struct Student { char num[10],name[20],sex[10]; int age; struct Score score; }stu[5]; void prints