a) Convert to the larger type. b) In case of equal size prefer unsigned over signed. You can verify this by changing the declaration of int b to int64_t b (i.e long long int type). The output would now say Negative. NOTE: Don't forget to include stdint.h if you use int64_t..:)
Given an integer n, write a function that returns count of trailing zeroes in n!. Examples: Input: n = 5 Output: 1 Factorial of 5 is 20 which has one trailing 0. Input: n = 20 Output: 4 Factorial of 20 is 2432902008176640000 which has 4 trailing zeroes. Input: n = 100 Output: 24
The whole expression get typecasted to unsigned after evaluation? Is this the reason?
ReplyDelete@Spectatot
ReplyDeleteActually, the conversion rules are
a) Convert to the larger type.
b) In case of equal size prefer unsigned over signed.
You can verify this by changing the declaration of int b to int64_t b (i.e long long int type). The output would now say Negative.
NOTE: Don't forget to include stdint.h if you use int64_t..:)