In the following code:
int c;
while((c=10)>0)
What does c = 10
evaluate to? Is it 1 which indicates that the value 10 is assigned to variable c successfully, or is it 10? Why?
In the following code:
int c;
while((c=10)>0)
What does c = 10
evaluate to? Is it 1 which indicates that the value 10 is assigned to variable c successfully, or is it 10? Why?
c = 10 is an expression returning 10 which also assigns 10 to c.
c = 10
has the value of c
after the assignment (N1570, 6.5.15/3). Assignment expressions are not Boolean expressions. –
Edom c
which is 10 for the first call. The difference is that the value of c
will most likely change in the while
block. –
Colligate It is said in C99 6.5.16
An assignment operator stores a value in the object designated by the left operand. An
assignment expression has the value of the left operand after the assignment, but is not an
lvalue.
int x = 10; int y = (x += 1);
results in x = 11, y = 11
, not x = 11, y = 1
. –
Phototelegraph Assignment returns with the assigned value. In case c=10
is 10. Since 10!=0, in c it means also true so this is an infinite loop.
It is like you would write
while(10)
Plus You've made the assignment.
If You follow this logic, You can see, that
while(c=0)
would be a loop that never executes its statement or block.
This is an infinite loop. It first assign 10 to c, then compare it with c > 0, then again loop starts, assign 10 to c, compare it with c>0 and so on. Loop never ends. This is equivalent to the following:
while(c=10);
/* Because c assign a garbage value, but not true for all cases maybe it assign 0 */
while(c);
Edit: It will not return 10 because compiler return only true or false value, so it return true or 1 instead of 10.
c = 10
will it not assign the value 10
to c
? –
Sharla while((c=10)>0)
c = 10
should return 10
.
Now, for while(10>0)
10>0
, the >
operator returns 1
(non-zero value).
© 2022 - 2024 — McMap. All rights reserved.