오유인페이지
개인차단 상태
★☆님의 개인페이지입니다
회원가입 : 17-07-17
방문횟수 : 493회
닉네임 변경이력
일반
베스트
베오베
댓글
3242 2018-12-27 01:12:14 0
사자성어 질문드립니당~! [새창]
2018/12/25 22:21:30
"혹시나 했는데 역시나"는 "과연"이군요 :) 과연 또는 "아니나 다를까"는 과불기연果不其然이라고 씁니다. 비슷한 말에... 과연여차果然如此나 과연여시果然如是가 있고요.
3241 2018-12-26 23:44:00 0
[gcc] 어셈블리 코드 보기 [새창]
2018/12/26 18:08:23
참... 그리고 A 레지스터와 D 레지스터는... 인수를 받고 건넬 때 사용하고요.
3240 2018-12-26 22:57:48 0
[gcc] 어셈블리 코드 보기 [새창]
2018/12/26 18:08:23
감사합니다. 사실은... 어셈블리 언어에 큰 관심이 있는 것은 아닙니다. 단지, C 코드를 바꿨을 때 어떻게 적용되는가... 즉, 어셈블리 코드가 바뀌지 않거나 같은 일을 하는 조건에서 C 코드를 어떻게 예쁘게 꾸밀 수 있을까에 더 관심이 많아요 :)
3239 2018-12-26 20:15:50 2
[gcc] 어셈블리 코드 보기 [새창]
2018/12/26 18:08:23
감사합니다!! 이런 것이 있었군요. 익스플로러11에서는 잘 보이지 않아요. 이게 뭔가... 싶었는데, 엣지에서 다시 보니 아하~ 이런 것도 있구나 싶네요. 기억해둘만하네요.
https://godbolt.org/
참, 이 서비스와는 다른 것이지만 잠깐 다른 컴파일러에서는 어떻게 컴파일될까 볼때는
https://rextester.com/
https://wandbox.org/
를 쓰고는 있었어요 :)
3238 2018-12-26 19:48:45 1
초초심자가 질문드립니다. 파이썬 코딩 관련 [새창]
2018/12/25 21:43:26
참고로
>>> credit = [3, 4, 3, 2]
일 때...
>>> mean = sum (map (lambda x : x[0] * x[1], zip (grades_list, credit))) / sum (credit)
여기서, sum (credit) 은 언제나 12 라는 것을 알고 있습니다. 다시 계산하는 낭비를 할 필요는 없겠죠.
3237 2018-12-26 18:51:07 0
초초심자가 질문드립니다. 파이썬 코딩 관련 [새창]
2018/12/25 21:43:26
재미있네요 :) 파일을 with 로 감싼 것도 좋고, 람다로 리스트를 만든다거나, 맵으로 확장한 후 수렴시키는 것, 이뉴머레이터... 파이선의 고급 기능을 쓰고있군요. 그런데, 굳이 문자열을 파싱할 필요는 없지 않을까 싶기도 해요. CSV 모듈은 기본 모듈이거든요. 그리고, 이 문제에서 평균은 단순평균이 아니라 이수단위를 고려한 평균이거든요. 뭐... 이런 것은 질문한 분이 수정해야겠죠. 수고하셨습니다. 좋은 코드네요. 추천!!
3236 2018-12-25 22:41:31 0
초초심자가 질문드립니다. 파이썬 코딩 관련 [새창]
2018/12/25 21:43:26
성적표 라는 딕셔너리를 사용한다고 가정했는데... 20만 행이 넘는 값들이 존재한다면 파일의 형태겠군요. 파일 입출력에 대해서도 알아보는 것이 좋겠네요. cvs 모듈을 import 해서 각각의 라인을 리스트로 변환할 수 있을 것 입니다. 리스트 형태로 사용해도 되고, 딕셔너리로 변환해도 되겠죠.
3235 2018-12-25 22:20:16 0
초초심자가 질문드립니다. 파이썬 코딩 관련 [새창]
2018/12/25 21:43:26
>>> 성적표 = {'김영희': [70, 90, 54, 87], '박철수': [50, 65, 87, 98], '홍길동': [40, 75, 47, 85]}
>>> 통지표 = """금번 시험 결과에 대해 학부모님꼐 알려드립니다.
... %s 학생의 금번 시험의 각 과목 성적은 다음과 같습니다.
... 국어과목은 %d점 이고, 수학과목은 %d점, 영어과목은 %d점 체육과목은 %d점으로
... 전체 과목 평균을 내면 %f점입니다.
... %s 학생 부족한 과목에 대해서 신경 써주길 바랍니다.
... 감사합니다.
... """
>>> for 이름, 성적 in 성적표.items():
... print (통지표 % (이름, 성적[0], 성적[1], 성적[2], 성적[3], (성적[0]*3+성적[1]*4+성적[2]*3+성적[3]*2)/12, 이름))
...

웬만한 책에는 다 다루는 내용일 것 입니다. 딕셔너리, 반복문, 문자열포멧팅.
3234 2018-12-24 17:22:17 0
[gcc] 의미없어 보이지만 의미심장한 (X)+0 그리고 함수 오버로딩 [새창]
2018/12/21 07:40:31
위 삼항연산자에서 포인터 형변환 실패로 포인터가 같은 타입인지 점검하는 예를 생각하니... 다른 의미도 있을 것 같네요.

본문에서 관심을 가진 것은 (X)+0 이 X 가 타입이면 형변환이고 변수면 덧셈인 경우었습니다. 그런데 변수인 경우 C 의 기본 데이터 타입은 숫자를 더하는 것이 가능하지만, 구조체에 숫자를 더하는 것은 에러를 내겠네요. 따라서, 어떤 변수가 구조체가 아니라는 것을 assert 하는데 쓸 수 있을 것 같습니다.
3233 2018-12-22 13:14:32 0
[gcc] 의미없어 보이지만 의미심장한 (X)+0 그리고 함수 오버로딩 [새창]
2018/12/21 07:40:31
아하!! 그거군요:) 감사합니다!!

혹시 관심 있을 분을 위해 정리합니다. 삼항연산자는 (조건식 ? 참일때 : 거짓일때) 라는 형태입니다. 그런데, 참일때와 거짓일때는 서로 같은 타입이거나 승급이 될 수 있는 타입이어야 합니다. 예를 들어, ( 조건식 ? (char)1 : 0 ) 은 조건식에 따라 (char)1 또는 0 를 돌려주기위한 구문입니다. 만일, 조건식이 참인 경우 문자형 상수 1 을 돌려준다고 착각(!)할 수 있습니다. "참일때와 거짓일때는 서로 같은 타입이거나 승급이 될 수 있는 타입"이어야 하는데, (char)1 은 문자형이고 0 은 정수형입니다. 서로 같은 타입이 아닙니다. 그런데, 문자형은 정수형으로 승급이 가능합니다. 따라서, 이 식이 돌려주는 값은 언제나 정수형(!)입니다.

잠깐 옆길로 돌아가서, 만일 조건식이 상수식이라면 __builtin_choose_expr() 을 삼항연산자 대신 사용할 수 있습니다. 그런데, 삼항연산자와 달리 __builtin_choose_expr() 은 참일때와 거짓일때가 서로 같은 타입일 필요가 없습니다!! 그리고, 참일때와 거짓일때가 프로모션 규칙에 따른 승급도 없습니다. 이것이 __builtin_choose_expr() 의 가장 큰 장점 중 하나인데 잊고있었습니다. 만일 참일때는 (char)1 을 돌려주고, 거짓일때는 (int)0 을 돌려줘야 한다면 삼항연산자를 쓸 수 없습니다. __builtin_choose_expr() 을 써야합니다.

다시 삼항연산자로 돌아와서, 일반적으로 두 개의 서로 다른 타입의 포인터들 사이에는 묵시적인 승급 규칙이 없습니다. 따라서, (1 ? (ptr) : &((type *)0)->member)) 는 (ptr) 와 &((type *)0)->member) 의 타입이 같지 않다면 에러를 내게됩니다!!
3232 2018-12-21 19:04:07 0
나의 코딩 룰. [새창]
2018/12/21 12:00:47
죄송하지만 무슨 말씀을 하시는지 잘 모르겠네요TT 제가 한 말은... 코드를 작성/수정하면서 어떻게 컴파일되는지 살펴보는 것이 좋겠다 정도였거든요. 그러면서... 자바는 잘 모르겠지만 C 언어의 경우 일반적으로 변수를 많이 사용한다고 해서 문제가 생길 가능성은 거의 없고 오히려 적절히 이름을 붙이는 것(변수 사용)이 훨씬 좋지만, 어떤 특별한 경우는 변수를 사용하는 것과 함수를 호출하는 것에 차이가 없을 수도 있다는 정도의 말이었어요. 당연히 최적화의 부작용이 있을 수도 있겠죠. 수동최적화나 어떤 부분은 최적화 금지를 해야 할 경우도 있고요.
3231 2018-12-21 12:55:00 2
나의 코딩 룰. [새창]
2018/12/21 12:00:47
final 이 C 의 const 와 비슷한 역할을 하는 것 같네요. 저도 const 를 붙이려고 항상 신경쓰고 있습니다 :)

그런데, gcc 의 경우 어셈블리리 코드로 출력이 가능합니다. 자바도 유사 어셈블리 코드로 출력하는 기능이 있을 것도 같은데요... 의문이 생기면 어셈블리 코드를 보면 어떻게 코드를 수정할지 아이디어가 생기는 것 같습니다. 물론, C 와 자바는 다르겠지만... C 의 경우는 변수를 선언한다고 해서 별다른 비용이 발생하지 않습니다. 특히 최적화 옵션을 켠 상태로 어셈블리 코드를 보면... 사용하는 모든 것에 (쓰지 않는 변수는 경고를 줍니다) 이름을 붙여도 코드는 변하지 않습니다. 그러니, 함수를 호출하는 것 보다 변수를 선언하고 기억시키는 것이 훨씬 좋죠. C 의 경우입니다 :)

더 재미있는 것은... 어떤 함수들은 여러 번 호출해도 이전의 값을 기억하고 있어서 한번만 호출한 것과 같게됩니다. 대표적인 것이 gcc 에서 strlen() 함수입니다. 이 함수는 pure 라는 속성을 가지고 있어요. 자바의 경우도 비슷한 것이 있지않을까 싶네요. 좋은 글 읽고 든 생각을 적어봤습니다.
3230 2018-12-14 16:20:38 0
c언어 증감연산자 질문 [새창]
2018/12/14 12:35:51
재미있네요 :) 저도 한번 시험해봤습니다.

Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23506 for x64 에서
result = (++val) + (++val) + (++val) + (++val) + (++val) + (++val) + (++val) + (++val);
는 val = 8, result = 64 이네요.

gcc 5.4.0 에서는 val = 8, result = 37 이고요,
clang 3.8.0 에서는 val = 8, result = 36 이네요.
3229 2018-12-14 16:14:07 0
c언어 증감연산자 질문 [새창]
2018/12/14 12:35:51
결과에 답을 맞춰본 것 입니다. 아래 댓글이 맞고 제가 틀렸네요TT
3228 2018-12-14 13:19:59 0
c언어 증감연산자 질문 [새창]
2018/12/14 12:35:51
result = ((++(val)) + +)+((val) + +)+(val);
< 이전페이지 다음페이지 >
1 2 3 4 5 >
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호