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 a Binary Tree, find vertical sum of the nodes that are in same vertical line. Print all sums through different vertical lines. Examples: 1 / \ 2 3 / \ / \ 4 5 6 7 The tree has 5 vertical lines Vertical-Line-1 has only one node 4 => vertical sum is 4 Vertical-Line-2: has only one node 2=> vertical sum is 2 Vertical-Line-3: has three nodes: 1,5,6 => vertical sum is 1+5+6 = 12 Vertical-Line-4: has only one node 3 => vertical sum is 3 Vertical-Line-5: has only one node 7 => vertical sum is 7 So expected output is 4, 2, 12, 3 and 7
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..:)