A
arnuld
my friend sent me this programme:
#include<iostream>
int main()
{
int a=5;
std ::cout << ++a
<< "\t"
<< ++a
<<
return 0;
}
its output should be "6 7" and this i what i get:
(arnuld@arch ~ )% g++ -ansi -pedantic -Wall -Wextra new2.cpp
new2.cpp: In function 'int main()':
new2.cpp:10: warning: operation on 'a' may be undefined
(arnuld@arch ~ )% ./a.out
7 7
(arnuld@arch ~ )%
to not to relay on "undefined behaviuor" i changed this programme:
#include<iostream>
int
main()
{
int a =
5;
int b = +
+a;
int c = +
+a;
std::cout <<
b
<<
"\t"
<<
c
<<
std::endl;
return
0;
}
and now it runs as expected:
(arnuld@arch ~ )% g++ -ansi -pedantic -Wall -Wextra new.cpp
(arnuld@arch ~ )% ./a.out
6 7
(arnuld@arch ~ )%
i want to know why the direct use of ++a in std::cout is undefiend
behaviour" ?
#include<iostream>
int main()
{
int a=5;
std ::cout << ++a
<< "\t"
<< ++a
<<
return 0;
}
its output should be "6 7" and this i what i get:
(arnuld@arch ~ )% g++ -ansi -pedantic -Wall -Wextra new2.cpp
new2.cpp: In function 'int main()':
new2.cpp:10: warning: operation on 'a' may be undefined
(arnuld@arch ~ )% ./a.out
7 7
(arnuld@arch ~ )%
to not to relay on "undefined behaviuor" i changed this programme:
#include<iostream>
int
main()
{
int a =
5;
int b = +
+a;
int c = +
+a;
std::cout <<
b
<<
"\t"
<<
c
<<
std::endl;
return
0;
}
and now it runs as expected:
(arnuld@arch ~ )% g++ -ansi -pedantic -Wall -Wextra new.cpp
(arnuld@arch ~ )% ./a.out
6 7
(arnuld@arch ~ )%
i want to know why the direct use of ++a in std::cout is undefiend
behaviour" ?