2017-12-14 76 views
8

? 이 루프는 공간 숫자를 출력합니다.마지막 학기는 무엇을하고 있습니까? 이 문장</p> <pre><code>for (i = 1; i <= n; i++) { cout << i << " n"[ i == n ]; } </code></pre> <p>하고 <code>cout</code> 문 <code>[i==n]</code>의 마지막 기간이 무엇에

이다
(i == n ? '\n' : ' ') 

, i == n, 개행 문자를 인쇄 달리 공간 인쇄 :

+1

[문자열의 n 번째 문자는 어떻게 가져올 수 있습니까?] (https://stackoverflow.com/questions/8454228/how -n-character-of-a-string을 얻을 수 없음) –

+1

@underscore_d : 확실히 아닙니다. '[i == n]'의 비정상적인 표현에 유의하십시오. – MSalters

+1

표준 부울 평가를 통해 'i == n'은 '0'또는 '1'이됩니다. 그래서, 누군가 foo [bar]가하는 일을 배우게되면, "foo"[i == n]'는 나에게 사소한 것처럼 보인다. –

답변

6

' ' 문자 또는 '\n' 문자를 색인하는 것은 바보 같은 방법입니다. 이 같은 생각과 인쇄에 "Hello World"를 수행합니다

#include <iostream> 

int main() { 
     for (int i = 0; i < 11; i++) 
       std::cout << "Hello World"[i]; 
     return 0; 
} 

i == n 중 하나 true 또는 false 될 것입니다. [i == n]을 사용하여 색인 생성을 위해 정수로 변환 할 때 첫 번째 또는 두 번째 요소가 나타납니다.

+0

어리석은 한정어의 Realy 오른쪽 사용 (표준화되어야 함)! – Oliv

+0

멋진! 단지, 나는 인수를'[]'로 바꾸어서 품질을 향상시킬 것입니다. 'i [ "Hello World"]'. ;-) –

13

이 기입 둔각 방법이다.

아이디어는 공백으로 숫자를 분리하고 모든 숫자가 인쇄 된 후에 줄 바꿈을하는 것입니다.

+1

전에 본적이 없습니다! – CinCout