#include <stdio.h>int main( void ){int x=0,y=0,z;z=x&&y++;printf("y= %d",y);return 0;} http://codepad.org/wGQZuciP y가 증가를 안해 ㅋㅋㅋ
&&은 왜쓴거임?
&&의 경우는 좌측 연산이 거짓일경우 우측연산 시도를 안해
z에다가 x값을 복사했는데 그결과가0이니까 y++연산은 그냥 건너뛰어 버린거지
short-circuiting이랑 증감연산자랑 무슨 상관? x && (y = 3); 이러면 대입 연산자가 더러운건가
a&&b 하면 a가 1이면 a와 b를 불 대수로 변환시킨것을 AND하고 0이면 뒤에 있는거 비교 안함
그리고 그냥 0되는거
and 연산은 좌항이 거짓이면 우항은 무시하는게 일반적인 프로그래밍 원칙인데, 비주얼베이직 좆같은게 그런게 없더라. 예를들면 우항이 참일때만 좌항이 에러가 안나는 연산을 이용해서 처리하는게 많은데, 비베에서 똑같이 했더니 에러나고 지랄 ㅋㅋㅋ
이 문제에서는 숏서킷이 별로 안중요함. 왜냐하면 x나 y값에 상관없이 y는 증가하지 않기 때문
어쨌거나 and연산 or연산 원칙을 알아두면 좋음. and : 좌항 참, 우항 결정. 좌항 거짓, 우항 무시. // or : 좌항 참, 우항 무시. 좌항 거짓, 우항 결정.
아, and연산이라고 쓰면 &를 말하는거니까 내가 말한건 and 논리연산, or 논리연산 임. 비베같은 놈들은 저 원칙 안 따르지만, 왠만한 언어는 다 저 원칙 따름. 이게 무슨 소용 있나 싶겠지만, 알아두면 다 쓰게 되어 있음.
읽어보니 위에 댓글 잘못 썼네. "예를들면 좌항이 참일때만 우항이 에러가 안나는 연산을 이용해서 처리하는게 많은데"라고 썼어야했는데 바꿔씀. 읭.
퍄ㅑㅑ 댓글 멋있다
숏서킷이 별로 안중요하기는 개뿔 ㅋㅋ는 해보지도 않고 뭔 개소릴까
http://ideone.com/Dvkm6W