This question already has answers here:
Why are these constructs using pre and post-increment undefined behavior?
(14 answers)
Which of the following combinations of post & pre-increment operators have undefined behaviour in C?
(7 answers)
Closed 6 years ago.
Hello Stackoverflowers,
Considering the following pre-increment addition, can you explain me why j = 8 in the following code ?
int i = 2;
int j = ++i + ++i;
//j = 8, why ??
Related
This question already has answers here:
Why are these constructs using pre and post-increment undefined behavior?
(14 answers)
Undefined behavior and sequence points
(5 answers)
Closed 19 days ago.
I was just messing with a piece of cpp code that I came across something I couldn't find an explanation for.
when I run this in c++:
int a = 5;
cout << (--a) * (--a);
9 is printed in the console. but when you get the variable (a) from the input, and then give it the same value (5), the result is different:
int a;
cin >> a;
cout << (--a) * (--a);
when you enter 5 as the input, 12 is printed in the console. Why is it so?
This question already has answers here:
Is subtracting larger unsigned value from smaller in C++ undefined behaviour?
(2 answers)
Is unsigned integer subtraction defined behavior?
(6 answers)
Closed 3 years ago.
vector<int> a(10);
vector<int> b(20);
if ((a.size() - b.size()) > 1) {
cout << "yes";
}
Can anyone explain why this code prints "yes". If I try storing a.size() - b.size() in an int variable, it is working as expected.
This question already has answers here:
Undefined behavior and sequence points
(5 answers)
Closed 7 years ago.
I know the concept of post increment but how does it apply to the follow? The output of t is 10. How to explain the undefined behavior?
int a = 2;
int b = 3;
int t;
t = a++ * (a+b);
That is undefined behavior you have there.
This question already has answers here:
Why are these constructs using pre and post-increment undefined behavior?
(14 answers)
Output of multiple post and pre increments in one statement [duplicate]
(1 answer)
Closed 8 years ago.
int main()
{
int var = 1;
var += ++var;
cout<<var;
return 0;
}
In Java this will output 3, as expected, but in C++ (above) it outputs 4. Why?
Because this is undefined behaviour. You're modifying and accessing the same variable without an intervening sequence point, so the outcome is really up to the compiler. If you compile this with clang, you'll see:
unsequenced modification and access to 'var'
I actually get 4 as the answer, but it could equally be 3, 7, 123125123 or "Lobster".
This question already has answers here:
Accessing arrays by index[array] in C and C++
(2 answers)
Closed 9 years ago.
Today when i was coding inside my visual studio i unintentionally did following
for(int i=0;i<10;i++)
{
cout<<"Value is"<<[i]arr<<endl;
}
instead of arr[i] and it worked.why it worked?
Because [i]arr == *(i + arr) == arr[i]
Note: + operator holds commutative property