programing

C에서 =+는 무엇을 의미합니까?

kingscode 2022. 9. 1. 23:57
반응형

C에서 =+는 무엇을 의미합니까?

알게 되었다=++=늘 c코 코코코 코코코 코코 코코코 코코 코코 。 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★서류에서도 찾을 수 없었습니다.

고대 버전의 C에서는=+와 동등했다.+=이치

할당 연산자를 했는데, 이 경우 B는 이 연산자를 사용합니다.x+=yy로로 합니다.xMcIlroy를 경유하여 McIlroy는 자신의 C에서는 의 철자는 "Algol 68"로 되어 ).Milroy milg TMG mil mil mil 。(B와 초기 C에서는 연산자의 철자가 입력되었습니다.)=++=실수는 B의 의 첫 1976년, B의 어휘 분석기의 첫 번째 형식을 다루다.

[C언어의 발달, 데니스 리치]Copyright ACM, 1993.내부 인용 생략]

1970년대일 뿐이다.=에 '아예'가 붙습니다.+.

1979년 1월호 UNIX 7판 매뉴얼(Vol 2a)에서 오래된 표기법에 대한 증거를 찾을 수 있습니다.온라인에서는 http://cm.bell-labs.com/7thEdMan/(2015년 7월경부터 입수 불가, 2015년 6월판에서는 WayBack Machine(http://cm.bell-labs.com/7thEdMan/) 또는 https://9p.io/7thEdMan/)에서 입수할 수 있습니다.

이 장의 제목은 Dennis M의 'C 레퍼런스 매뉴얼'이다.Ritchie 및 매뉴얼 PDF 버전에는 있지만 HTML 버전에는 없습니다.관련 부분에는 다음과 같이 적혀 있습니다.

7.14.1 lvalue = 식

표현식의 값은 lvalue에 의해 참조되는 객체의 값을 대체합니다.오퍼랜드의 유형이 같을 필요는 없지만 int, char, float, double 또는 포인터여야 합니다.어느 오퍼랜드도 포인터가 아닌 경우 할당은 예상대로 이루어집니다.아마 오른쪽 식 변환이 선행될 수 있습니다.두 오퍼랜드가 모두 int 또는 포인터일 경우 변환은 이루어지지 않습니다.식 값은 단순히 lvalue에 의해 참조되는 객체에 저장됩니다.따라서 사용 시 주소 지정 예외를 발생시키는 포인터를 생성할 수 있습니다.

2 = + 7.14.2 lvalue = + 식
=- 식 7.14.3 lvalue =-
74 =* 7.14.4 lvalue =* 식
5 = / 7.14.5 lvalue = / 식
=% 식 7.14.6 =% 식
식 .14.7 lvalue => 표시
8 = < 7.14.8 lvalue = < 표준
79 = & 7.14.9 lvalue = & 식
= 7.14.10 lvalue =^160
= | 7.14.11 lvalue = | 식

"E1 =op E2" 형식의 표현식은 "E1 = E1 op E2"와 동등한 것으로 유추할 수 있다. 그러나 E1은 한 번만 평가된다.게다가 포인터가 정수에 추가되는 "i =+ p"와 같은 표현은 금지된다.


이와는 별도로 AT&T가 1984년 10월 테크니컬 저널로 발행한 'UNIX® SYSTEM: Readings and Applications, Volume II'에 L Rosler의 'C의 진화'라는 논문이 있다(ISBN 0-13-98457).그 중 하나는 다음과 같습니다.

III. 호환되지 않는 변경 관리

필연적으로, 일부 변경은 기존의 유효한 프로그램의 의미를 변화시킨다.내부적으로 사용되는 다양한 컴파일러를 유지하는 사람들은 프로그래머가 이러한 변경이 적용된다는 충분한 경고를 받고 새로운 컴파일러 릴리스의 도입으로 인해 모든 프로그램이 즉시 재컴파일되는 것은 아니라는 것을 확실히 하기 위해 노력하고 있습니다.

를 들어, 표현 「」, 「」가 사용되고 있습니다.x=-1는 '××이라는 되었습니다.이제 "-1을 x에 할당"을 의미하는 것으로 해석됩니다.이 변경은 매년 3개의 주요 릴리즈에 걸쳐 이루어졌습니다.와 컴파일러의lint되어 "" 조작의 에 대해 가 생성되었습니다.를 들어 "" 할당 조작이 을 알 수 있습니다=-다음으로 파서를 새로운 시멘틱스로 변경해, 컴파일러가 애매한 할당 조작을 경고했습니다.마침내, 경고 메시지는 제거되었다.

'구식 초기화' 사용 지원

int x 1;

(등호 없음)는 같은 방법으로 드롭되었습니다.이를 통해 파서는 보다 인텔리전트한 구문 오류 진단을 생성할 수 있습니다.

예상대로 일부 C 사용자는 호환되지 않는 컴파일러를 도입하여 오래된 소스 코드를 변경할 것인지, 아니면 자신의 버전의 컴파일러를 유지보수할 것인지를 선택해야 할 때까지 경고를 무시했습니다.그러나 전반적으로 단계적 변화의 전략은 성공적이었다.


Also, in Brian W Kernighan and Dennis M Ritchie C 프로그래밍 언어, 제1회 EDN (1978), on p212 in Appendix A, §17 시대착오, it says:

이전 버전의 C에서는 할당 연산자 대신 형식을 사용했습니다.그 결과, 다음과 같은 애매한 결과가 초래됩니다.

x=-1

실제로 감소하는 것은x그 이후=및 그-인접해 있지만 쉽게 할당될 수 있습니다.-1로.x.

그냥 과제 뒤에 단항 플러스만 있으면 돼

#include <stdio.h>
int main() {
    int a;
    a =+ 5;
    printf("%d\n",a);
    return 0;
}

「5」라고 인쇄합니다.바꾸다a =+ 5로.a =- 5"-5"로 출력됩니다.읽기 쉬운 방법a =+ 5아마a = +5.

오래된 변종이야+=현대의 컴파일러에서는 할당 연산자 뒤에 단항 연산자가 이어지는 것과 같습니다.+.

생각합니다

a =+ 5;

와 동등해야 한다

a = (+5);

따라서 매우 나쁜 스타일의 코드가 될 수 있습니다.

다음 코드를 시도해보니 "5"로 표시되었습니다.

#include <iostream>
using namespace std;

int main()
{
    int a=2;
    a =+ 5;
    cout << a;
}

당신의 질문을 읽고 방금 이것들에 대해 조사했습니다.내가 뭘 찾았는지 말해줄게.gcc와 turboc으로 시험해봤다.PC에 Visual Studio를 설치하지 않았기 때문에 Visual Studio에서 확인하지 못했습니다.

  int main()
  { 
   int a=6;
   a =+ 2;
   printf("%d",a);
  }  o/p , a value is 2

  int main()
  {
   int a=6;
   a =- 2;
   printf("%d",a);
  } o/p , a value is -2 

다른 답변은 C의 고대 버전이라고 해서 잘 모르겠습니다.그러나 현대의 컴파일러는 그것들을 할당해야 할 가치로 취급하고 있습니다(그것보다 긍정적이든 부정적이든).아래의 코드는, 그 것에 대해 보다 확실히 하고 있습니다.

  int main()
  { 
   int a=6;
   a =* 2;  \\ Reporting an error inavlid type of argument of unary *
   printf("%d",a);
  } 
 if *= is equal to =* then it should not report error but its throwing an error

"=+"를 사용하여 피연산자를 a = +10과 같이 양수인 a = -10을 할당합니다.

언급URL : https://stackoverflow.com/questions/7573978/what-does-mean-in-c

반응형