while括号里内容的限制

问题遇到的现象和发生背景

while后面括号的内容限制是啥

用代码块功能插入代码,请勿粘贴截图
int a, b=1;

scanf ("%d", &a);

if (b<=a && a>0)
    while()//循环 
{
b=a*b;
a-=1;
}

printf("%d\n", b);
运行结果及报错内容

这是在做阶乘运算。括号里填入a相关式子可以正常执行,但是填入其它的就不行了比如“b”、“111”等数字、“a<0/a==某个数”,但是填“a>0”就可以

我的解答思路和尝试过的方法

while里不是0和错误关系表达式才被认为是假吗

我想要达到的结果 求问while括号是有什么限制吗

你需要的是 a!,又a!=a(a-1)...1
,则直接写成b=1 ;while(a>0)b = a*b,a-=1;即可

但是注意 可能会 爆int 值,当 a 过大的时候

你执行的条件就是a要大于等于b
但是你的while语句也是有问题的,没有结束条件啊。
将if判断去掉
你改为while(b<=a && a>0) 就可以了