问题
#include<stdio.h>
#include<conio.h>
/* Function Declaration
int pal(int x); */
/*Declaring Second Function*/
int rev(int x);
int main()
{
int a, b, c;
clrscr();
printf("Enter The Number Which You Want To Check Is Palindrome Or Not\n");
scanf("%d", &a);
b = rev(a);
printf("%d", b);
if(b == a) {
printf("%d Is A Palindrome Number", a);
} else {
printf("%d Isn't A Plaindrome Number", a);
}
getch();
return(0);
}
int rev(int x)
{
int d = 0;
while(x) {
d = d * 10 + x % 10;
x = x / 10;
}
return(d);
}
I didn't get the use of while(x)
statement. I mean, we attach some condition with while loop i.e. while(x!=0)
, so what does standalone while(x)
means.
回答1:
while (x)
is the same as while (x != 0)
For an integral data type, 0 is false
& everything else is true
. So while (x)
would evaluate to while(true)
for all x != 0
.
Similarly, you will also come across expressions like while(!x)
or if(!x)
If x
has value a non zero value, then x
is true
& !x
is false
.
If x
has value 0
, then x
is false
& !x
is true
.
So writing (!x)
is the same as writing (x == 0)
You will also see similar usage with pointers. For a pointer p
, (p)
is the same as (p != NULL)
and (!p)
is the same as (p == NULL)
.
来源:https://stackoverflow.com/questions/25699689/use-of-just-whilex