{"id":20570398,"url":"https://github.com/younghakim7/c_project","last_synced_at":"2026-03-10T04:04:38.154Z","repository":{"id":59546436,"uuid":"440585896","full_name":"YoungHaKim7/c_project","owner":"YoungHaKim7","description":"c_project \u0026 My Youtube Channel - GlobalYoung https://www.youtube.com/@GlobalYoung7","archived":false,"fork":false,"pushed_at":"2025-09-19T14:54:00.000Z","size":6745,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-26T00:42:50.294Z","etag":null,"topics":["c","c11","c17","c89","c90","c99"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/YoungHaKim7.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-12-21T16:42:33.000Z","updated_at":"2025-09-19T14:54:04.000Z","dependencies_parsed_at":"2025-01-16T20:53:43.628Z","dependency_job_id":"87bc2643-f81c-4602-ad63-5771ed0e2c6e","html_url":"https://github.com/YoungHaKim7/c_project","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/YoungHaKim7/c_project","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YoungHaKim7%2Fc_project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YoungHaKim7%2Fc_project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YoungHaKim7%2Fc_project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YoungHaKim7%2Fc_project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/YoungHaKim7","download_url":"https://codeload.github.com/YoungHaKim7/c_project/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YoungHaKim7%2Fc_project/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30324185,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T01:36:58.598Z","status":"online","status_checked_at":"2026-03-10T02:00:06.579Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","c11","c17","c89","c90","c99"],"created_at":"2024-11-16T05:12:43.359Z","updated_at":"2026-03-10T04:04:38.140Z","avatar_url":"https://github.com/YoungHaKim7.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Link\n\n- [(외부링크)C언어 Wiki에 잘 정리됨](https://en.wikipedia.org/wiki/C_(programming_language))\n- [Java vs C 용량 비교 변수 범위](#java-vs-c-data-represintationsizse-of-objectsin-bytes)\n- [c-operator-precedence](#c-operator-precedence)\n\n- C/C++\n  - [온라인으로 디버깅 된다. 완전 최고..https://www.onlinegdb.com/online_c++_debugger](https://www.onlinegdb.com/online_c++_debugger)\n\n\n\n\u003chr\u003e\n\n# 여기에 다 정리중.(C23 \u0026 C++14 / 23/ 26)\n\n- C23(build + cmake)\n  - https://github.com/YoungHaKim7/c23_pthread_cmake_just_sample\n\n- C++\n  - C++98/03/11/14/17/20\n    - https://github.com/YoungHaKim7/cpp_training2024\n  - C++23/26/29\n    - https://github.com/YoungHaKim7/cpp23_26_project\n    - 빌드 \u0026 cmake\n      - https://github.com/YoungHaKim7/cpp26_pthread_cmake_just_sample\n- (정리중..251010) 러스트(Rust) 개발자를 위한 C언어 기초(C23) \u0026\u0026 C++23/26 기초 \u0026\u0026 zig\n  - https://github.com/YoungHaKim7/C_Programming_Kernigan_and_Ritchie\n\n\u003chr /\u003e\n\n# vim tab setting[[🔝]](#link)\n\n```\nset tabstop=2\nset shiftwidth=2\n\n# tab 4칸 설정\nset tabstop=4\nset shiftwidth=4\n```\n\n\u003chr\u003e\n\n# C Operator Precedence[[🔝]](#link)\n- The following table lists the precedence and associativity of C operators. Operators are listed top to bottom, in descending precedence.\n  - https://en.cppreference.com/w/c/language/operator_precedence\n\n\u003ctable class=\"wikitable\"\u003e\n\n\u003ctr\u003e\n\u003cth style=\"text-align: left\"\u003e Precedence\n\u003c/th\u003e\n\u003cth style=\"text-align: left\"\u003e Operator\n\u003c/th\u003e\n\u003cth style=\"text-align: left\"\u003e Description\n\u003c/th\u003e\n\u003cth style=\"text-align: left\"\u003e Associativity\n\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003cth rowspan=\"6\"\u003e 1\n\u003c/th\u003e\n\u003ctd style=\"border-bottom-style: none\"\u003e \u003ccode\u003e++\u003c/code\u003e \u003ccode\u003e--\u003c/code\u003e\n\u003c/td\u003e\n\u003ctd style=\"border-bottom-style: none\"\u003e Suffix/postfix increment and decrement\n\u003c/td\u003e\n\u003ctd style=\"vertical-align: top\" rowspan=\"6\"\u003e Left-to-right\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"border-bottom-style: none; border-top-style: none\"\u003e \u003ccode\u003e()\u003c/code\u003e\n\u003c/td\u003e\n\u003ctd style=\"border-bottom-style: none; border-top-style: none\"\u003e Function call\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"border-bottom-style: none; border-top-style: none\"\u003e \u003ccode\u003e[]\u003c/code\u003e\n\u003c/td\u003e\n\u003ctd style=\"border-bottom-style: none; border-top-style: none\"\u003e Array subscripting\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"border-bottom-style: none; border-top-style: none\"\u003e \u003ccode\u003e.\u003c/code\u003e\n\u003c/td\u003e\n\u003ctd style=\"border-bottom-style: none; border-top-style: none\"\u003e Structure and union member access\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"border-bottom-style: none; border-top-style: none\"\u003e \u003ccode\u003e-\u0026gt;\u003c/code\u003e\n\u003c/td\u003e\n\u003ctd style=\"border-bottom-style: none; border-top-style: none\"\u003e Structure and union member access through pointer\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"border-bottom-style: none; border-top-style: none\"\u003e \u003ccode\u003e(\u003ci\u003etype\u003c/i\u003e){\u003ci\u003elist\u003c/i\u003e}\u003c/code\u003e\n\u003c/td\u003e\n\u003ctd style=\"border-bottom-style: none; border-top-style: none\"\u003e Compound literal\u003cspan class=\"t-mark-rev t-since-c99\"\u003e(C99)\u003c/span\u003e\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003cth rowspan=\"8\"\u003e 2\n\u003c/th\u003e\n\u003ctd style=\"border-bottom-style: none\"\u003e \u003ccode\u003e++\u003c/code\u003e \u003ccode\u003e--\u003c/code\u003e\n\u003c/td\u003e\n\u003ctd style=\"border-bottom-style: none\"\u003e Prefix increment and decrement\u003csup id=\"cite_ref-1\" class=\"reference\"\u003e\u003ca href=\"#cite_note-1\"\u003e[note 1]\u003c/a\u003e\u003c/sup\u003e\n\u003c/td\u003e\n\u003ctd style=\"vertical-align: top\" rowspan=\"8\"\u003e Right-to-left\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"border-bottom-style: none; border-top-style: none\"\u003e \u003ccode\u003e+\u003c/code\u003e \u003ccode\u003e-\u003c/code\u003e\n\u003c/td\u003e\n\u003ctd style=\"border-bottom-style: none; border-top-style: none\"\u003e Unary plus and minus\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"border-bottom-style: none; border-top-style: none\"\u003e \u003ccode\u003e!\u003c/code\u003e \u003ccode\u003e~\u003c/code\u003e\n\u003c/td\u003e\n\u003ctd style=\"border-bottom-style: none; border-top-style: none\"\u003e Logical NOT and bitwise NOT\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"border-bottom-style: none; border-top-style: none\"\u003e \u003ccode\u003e(\u003ci\u003etype\u003c/i\u003e)\u003c/code\u003e\n\u003c/td\u003e\n\u003ctd style=\"border-bottom-style: none; border-top-style: none\"\u003e Cast\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"border-bottom-style: none; border-top-style: none\"\u003e \u003ccode\u003e*\u003c/code\u003e\n\u003c/td\u003e\n\u003ctd style=\"border-bottom-style: none; border-top-style: none\"\u003e Indirection (dereference)\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"border-bottom-style: none; border-top-style: none\"\u003e \u003ccode\u003e\u0026amp;\u003c/code\u003e\n\u003c/td\u003e\n\u003ctd style=\"border-bottom-style: none; border-top-style: none\"\u003e Address-of\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"border-bottom-style: none; border-top-style: none\"\u003e \u003ccode\u003esizeof\u003c/code\u003e\n\u003c/td\u003e\n\u003ctd style=\"border-bottom-style: none; border-top-style: none\"\u003e Size-of\u003csup id=\"cite_ref-2\" class=\"reference\"\u003e\u003ca href=\"#cite_note-2\"\u003e[note 2]\u003c/a\u003e\u003c/sup\u003e\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"border-bottom-style: none; border-top-style: none\"\u003e \u003ccode\u003e_Alignof\u003c/code\u003e\n\u003c/td\u003e\n\u003ctd style=\"border-bottom-style: none; border-top-style: none\"\u003e Alignment requirement\u003cspan class=\"t-mark-rev t-since-c11\"\u003e(C11)\u003c/span\u003e\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003cth\u003e 3\n\u003c/th\u003e\n\u003ctd\u003e \u003ccode\u003e*\u003c/code\u003e \u003ccode\u003e/\u003c/code\u003e \u003ccode\u003e%\u003c/code\u003e\n\u003c/td\u003e\n\u003ctd\u003e Multiplication, division, and remainder\n\u003c/td\u003e\n\u003ctd style=\"vertical-align: top\" rowspan=\"11\"\u003e Left-to-right\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003cth\u003e 4\n\u003c/th\u003e\n\u003ctd\u003e \u003ccode\u003e+\u003c/code\u003e \u003ccode\u003e-\u003c/code\u003e\n\u003c/td\u003e\n\u003ctd\u003e Addition and subtraction\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003cth\u003e 5\n\u003c/th\u003e\n\u003ctd\u003e \u003ccode\u003e\u0026lt;\u0026lt;\u003c/code\u003e \u003ccode\u003e\u0026gt;\u0026gt;\u003c/code\u003e\n\u003c/td\u003e\n\u003ctd\u003e Bitwise left shift and right shift\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003cth rowspan=\"2\"\u003e 6\n\u003c/th\u003e\n\u003ctd style=\"border-bottom-style: none\"\u003e \u003ccode\u003e\u0026lt;\u003c/code\u003e \u003ccode\u003e\u0026lt;=\u003c/code\u003e\n\u003c/td\u003e\n\u003ctd style=\"border-bottom-style: none\"\u003e For relational operators \u0026lt; and ≤ respectively\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"border-top-style: none\"\u003e \u003ccode\u003e\u0026gt;\u003c/code\u003e \u003ccode\u003e\u0026gt;=\u003c/code\u003e\n\u003c/td\u003e\n\u003ctd style=\"border-top-style: none\"\u003e For relational operators \u0026gt; and ≥ respectively\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003cth\u003e 7\n\u003c/th\u003e\n\u003ctd\u003e \u003ccode\u003e==\u003c/code\u003e \u003ccode\u003e!=\u003c/code\u003e\n\u003c/td\u003e\n\u003ctd\u003e For relational = and ≠ respectively\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003cth\u003e 8\n\u003c/th\u003e\n\u003ctd\u003e \u003ccode\u003e\u0026amp;\u003c/code\u003e\n\u003c/td\u003e\n\u003ctd\u003e Bitwise AND\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003cth\u003e 9\n\u003c/th\u003e\n\u003ctd\u003e \u003ccode\u003e^\u003c/code\u003e\n\u003c/td\u003e\n\u003ctd\u003e Bitwise XOR (exclusive or)\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003cth\u003e 10\n\u003c/th\u003e\n\u003ctd\u003e \u003ccode\u003e|\u003c/code\u003e\n\u003c/td\u003e\n\u003ctd\u003e Bitwise OR (inclusive or)\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003cth\u003e 11\n\u003c/th\u003e\n\u003ctd\u003e \u003ccode\u003e\u0026amp;\u0026amp;\u003c/code\u003e\n\u003c/td\u003e\n\u003ctd\u003e Logical AND\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003cth\u003e 12\n\u003c/th\u003e\n\u003ctd\u003e \u003ccode\u003e||\u003c/code\u003e\n\u003c/td\u003e\n\u003ctd\u003e Logical OR\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003cth\u003e 13\n\u003c/th\u003e\n\u003ctd\u003e \u003ccode\u003e?:\u003c/code\u003e\n\u003c/td\u003e\n\u003ctd\u003e Ternary conditional\u003csup id=\"cite_ref-3\" class=\"reference\"\u003e\u003ca href=\"#cite_note-3\"\u003e[note 3]\u003c/a\u003e\u003c/sup\u003e\n\u003c/td\u003e\n\u003ctd style=\"vertical-align: top\" rowspan=\"6\"\u003e Right-to-left\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003cth rowspan=\"5\"\u003e 14\u003csup id=\"cite_ref-4\" class=\"reference\"\u003e\u003ca href=\"#cite_note-4\"\u003e[note 4]\u003c/a\u003e\u003c/sup\u003e\n\u003c/th\u003e\n\u003ctd style=\"border-bottom-style: none\"\u003e \u003ccode\u003e=\u003c/code\u003e\n\u003c/td\u003e\n\u003ctd style=\"border-bottom-style: none\"\u003e Simple assignment\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"border-bottom-style: none; border-top-style: none\"\u003e \u003ccode\u003e+=\u003c/code\u003e \u003ccode\u003e-=\u003c/code\u003e\n\u003c/td\u003e\n\u003ctd style=\"border-bottom-style: none; border-top-style: none\"\u003e Assignment by sum and difference\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"border-bottom-style: none; border-top-style: none\"\u003e \u003ccode\u003e*=\u003c/code\u003e \u003ccode\u003e/=\u003c/code\u003e \u003ccode\u003e%=\u003c/code\u003e\n\u003c/td\u003e\n\u003ctd style=\"border-bottom-style: none; border-top-style: none\"\u003e Assignment by product, quotient, and remainder\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"border-bottom-style: none; border-top-style: none\"\u003e \u003ccode\u003e\u0026lt;\u0026lt;=\u003c/code\u003e \u003ccode\u003e\u0026gt;\u0026gt;=\u003c/code\u003e\n\u003c/td\u003e\n\u003ctd style=\"border-bottom-style: none; border-top-style: none\"\u003e Assignment by bitwise left shift and right shift\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"border-top-style: none\"\u003e \u003ccode\u003e\u0026amp;=\u003c/code\u003e \u003ccode\u003e^=\u003c/code\u003e \u003ccode\u003e|=\u003c/code\u003e\n\u003c/td\u003e\n\u003ctd style=\"border-top-style: none\"\u003e Assignment by bitwise AND, XOR, and OR\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003cth\u003e 15\n\u003c/th\u003e\n\u003ctd\u003e \u003ccode\u003e,\u003c/code\u003e\n\u003c/td\u003e\n\u003ctd\u003e Comma\n\u003c/td\u003e\n\u003ctd\u003e Left-to-right\n\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\n\u003col class=\"references\"\u003e\n\u003cli id=\"cite_note-1\"\u003e\u003cspan class=\"mw-cite-backlink\"\u003e\u003ca href=\"#cite_ref-1\"\u003e↑\u003c/a\u003e\u003c/span\u003e \u003cspan class=\"reference-text\"\u003eThe operand of prefix \u003ccode\u003e++\u003c/code\u003e and \u003ccode\u003e--\u003c/code\u003e can't be a type cast. This rule grammatically forbids some expressions that would be semantically invalid anyway. Some compilers ignore this rule and detect the invalidity semantically.\u003c/span\u003e\n\u003c/li\u003e\n\u003cli id=\"cite_note-2\"\u003e\u003cspan class=\"mw-cite-backlink\"\u003e\u003ca href=\"#cite_ref-2\"\u003e↑\u003c/a\u003e\u003c/span\u003e \u003cspan class=\"reference-text\"\u003eThe operand of \u003ccode\u003esizeof\u003c/code\u003e can't be a type cast: the expression \u003cspan class=\"t-c\"\u003e\u003cspan class=\"mw-geshi c source-c\"\u003e\u003cspan class=\"kw4\"\u003esizeof\u003c/span\u003e \u003cspan class=\"br0\"\u003e\u0026#40;\u003c/span\u003e\u003cspan class=\"kw4\"\u003eint\u003c/span\u003e\u003cspan class=\"br0\"\u003e\u0026#41;\u003c/span\u003e \u003cspan class=\"sy2\"\u003e*\u003c/span\u003e p\u003c/span\u003e\u003c/span\u003e is unambiguously interpreted as \u003cspan class=\"t-c\"\u003e\u003cspan class=\"mw-geshi c source-c\"\u003e\u003cspan class=\"br0\"\u003e\u0026#40;\u003c/span\u003e\u003cspan class=\"kw4\"\u003esizeof\u003c/span\u003e\u003cspan class=\"br0\"\u003e\u0026#40;\u003c/span\u003e\u003cspan class=\"kw4\"\u003eint\u003c/span\u003e\u003cspan class=\"br0\"\u003e\u0026#41;\u003c/span\u003e\u003cspan class=\"br0\"\u003e\u0026#41;\u003c/span\u003e \u003cspan class=\"sy2\"\u003e*\u003c/span\u003e p\u003c/span\u003e\u003c/span\u003e, but not \u003cspan class=\"t-c\"\u003e\u003cspan class=\"mw-geshi c source-c\"\u003e\u003cspan class=\"kw4\"\u003esizeof\u003c/span\u003e\u003cspan class=\"br0\"\u003e\u0026#40;\u003c/span\u003e\u003cspan class=\"br0\"\u003e\u0026#40;\u003c/span\u003e\u003cspan class=\"kw4\"\u003eint\u003c/span\u003e\u003cspan class=\"br0\"\u003e\u0026#41;\u003c/span\u003e\u003cspan class=\"sy2\"\u003e*\u003c/span\u003ep\u003cspan class=\"br0\"\u003e\u0026#41;\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e.\u003c/span\u003e\n\u003c/li\u003e\n\u003cli id=\"cite_note-3\"\u003e\u003cspan class=\"mw-cite-backlink\"\u003e\u003ca href=\"#cite_ref-3\"\u003e↑\u003c/a\u003e\u003c/span\u003e \u003cspan class=\"reference-text\"\u003eThe expression in the middle of the conditional operator (between \u003ccode\u003e\u003cb\u003e?\u003c/b\u003e\u003c/code\u003e and \u003ccode\u003e\u003cb\u003e:\u003c/b\u003e\u003c/code\u003e) is parsed as if parenthesized: its precedence relative to \u003ccode\u003e?:\u003c/code\u003e is ignored.\u003c/span\u003e\n\u003c/li\u003e\n\u003cli id=\"cite_note-4\"\u003e\u003cspan class=\"mw-cite-backlink\"\u003e\u003ca href=\"#cite_ref-4\"\u003e↑\u003c/a\u003e\u003c/span\u003e \u003cspan class=\"reference-text\"\u003eAssignment operators' left operands must be unary (level-2 non-cast) expressions. This rule grammatically forbids some expressions that would be semantically invalid anyway. Many compilers ignore this rule and detect the invalidity semantically. For example, \u003cspan class=\"t-c\"\u003e\u003cspan class=\"mw-geshi c source-c\"\u003ee \u003cspan class=\"sy1\"\u003e=\u003c/span\u003e a \u003cspan class=\"sy1\"\u003e\u0026lt;\u003c/span\u003e d \u003cspan class=\"sy4\"\u003e?\u003c/span\u003e a\u003cspan class=\"sy2\"\u003e++\u003c/span\u003e \u003cspan class=\"sy4\"\u003e:\u003c/span\u003e a \u003cspan class=\"sy1\"\u003e=\u003c/span\u003e d\u003c/span\u003e\u003c/span\u003e is an expression that cannot be parsed because of this rule. However, many compilers ignore this rule and parse it as \u003cspan class=\"t-c\"\u003e\u003cspan class=\"mw-geshi c source-c\"\u003ee \u003cspan class=\"sy1\"\u003e=\u003c/span\u003e \u003cspan class=\"br0\"\u003e\u0026#40;\u003c/span\u003e \u003cspan class=\"br0\"\u003e\u0026#40;\u003c/span\u003e\u003cspan class=\"br0\"\u003e\u0026#40;\u003c/span\u003ea \u003cspan class=\"sy1\"\u003e\u0026lt;\u003c/span\u003e d\u003cspan class=\"br0\"\u003e\u0026#41;\u003c/span\u003e \u003cspan class=\"sy4\"\u003e?\u003c/span\u003e \u003cspan class=\"br0\"\u003e\u0026#40;\u003c/span\u003ea\u003cspan class=\"sy2\"\u003e++\u003c/span\u003e\u003cspan class=\"br0\"\u003e\u0026#41;\u003c/span\u003e \u003cspan class=\"sy4\"\u003e:\u003c/span\u003e a\u003cspan class=\"br0\"\u003e\u0026#41;\u003c/span\u003e \u003cspan class=\"sy1\"\u003e=\u003c/span\u003e d \u003cspan class=\"br0\"\u003e\u0026#41;\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e, and then give an error because it is semantically invalid.\u003c/span\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eWhen parsing an expression, an operator which is listed on some row will be bound tighter (as if by parentheses) to its arguments than any operator that is listed on a row further below it. For example, the expression \u003cspan class=\"t-c\"\u003e\u003cspan class=\"mw-geshi c source-c\"\u003e\u003cspan class=\"sy2\"\u003e*\u003c/span\u003ep\u003cspan class=\"sy2\"\u003e++\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e is parsed as \u003cspan class=\"t-c\"\u003e\u003cspan class=\"mw-geshi c source-c\"\u003e\u003cspan class=\"sy2\"\u003e*\u003c/span\u003e\u003cspan class=\"br0\"\u003e\u0026#40;\u003c/span\u003ep\u003cspan class=\"sy2\"\u003e++\u003c/span\u003e\u003cspan class=\"br0\"\u003e\u0026#41;\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e, and not as \u003cspan class=\"t-c\"\u003e\u003cspan class=\"mw-geshi c source-c\"\u003e\u003cspan class=\"br0\"\u003e\u0026#40;\u003c/span\u003e\u003cspan class=\"sy2\"\u003e*\u003c/span\u003ep\u003cspan class=\"br0\"\u003e\u0026#41;\u003c/span\u003e\u003cspan class=\"sy2\"\u003e++\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e.\n\u003c/p\u003e\u003cp\u003eOperators that are in the same cell (there may be several rows of operators listed in a cell) are evaluated with the same precedence, in the given direction. For example, the expression \u003cspan class=\"t-c\"\u003e\u003cspan class=\"mw-geshi c source-c\"\u003ea\u003cspan class=\"sy1\"\u003e=\u003c/span\u003eb\u003cspan class=\"sy1\"\u003e=\u003c/span\u003ec\u003c/span\u003e\u003c/span\u003e is parsed as \u003cspan class=\"t-c\"\u003e\u003cspan class=\"mw-geshi c source-c\"\u003ea\u003cspan class=\"sy1\"\u003e=\u003c/span\u003e\u003cspan class=\"br0\"\u003e\u0026#40;\u003c/span\u003eb\u003cspan class=\"sy1\"\u003e=\u003c/span\u003ec\u003cspan class=\"br0\"\u003e\u0026#41;\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e, and not as \u003cspan class=\"t-c\"\u003e\u003cspan class=\"mw-geshi c source-c\"\u003e\u003cspan class=\"br0\"\u003e\u0026#40;\u003c/span\u003ea\u003cspan class=\"sy1\"\u003e=\u003c/span\u003eb\u003cspan class=\"br0\"\u003e\u0026#41;\u003c/span\u003e\u003cspan class=\"sy1\"\u003e=\u003c/span\u003ec\u003c/span\u003e\u003c/span\u003e because of right-to-left associativity.\n\u003c/p\u003e\n\u003ch3\u003e\u003cspan class=\"editsection\"\u003e[\u003ca href=\"/mwiki/index.php?title=c/language/operator_precedence\u0026amp;action=edit\u0026amp;section=1\" title=\"Edit section: Notes\"\u003eedit\u003c/a\u003e]\u003c/span\u003e \u003cspan class=\"mw-headline\" id=\"Notes\"\u003eNotes\u003c/span\u003e\u003c/h3\u003e\n\u003cp\u003ePrecedence and associativity are independent from \u003ca href=\"/w/c/language/eval_order\" title=\"c/language/eval order\"\u003eorder of evaluation\u003c/a\u003e.\n\u003c/p\u003e\u003cp\u003eThe standard itself doesn't specify precedence levels. They are derived from the grammar.\n\u003c/p\u003e\u003cp\u003eIn C++, the conditional operator has the same precedence as assignment operators, and prefix \u003ccode\u003e++\u003c/code\u003e and \u003ccode\u003e--\u003c/code\u003e and assignment operators don't have the restrictions about their operands.\n\u003c/p\u003e\u003cp\u003eAssociativity specification is redundant for unary operators and is only shown for completeness: unary prefix operators always associate right-to-left (\u003cspan class=\"t-c\"\u003e\u003cspan class=\"mw-geshi c source-c\"\u003e\u003cspan class=\"kw4\"\u003esizeof\u003c/span\u003e \u003cspan class=\"sy2\"\u003e++*\u003c/span\u003ep\u003c/span\u003e\u003c/span\u003e is \u003cspan class=\"t-c\"\u003e\u003cspan class=\"mw-geshi c source-c\"\u003e\u003cspan class=\"kw4\"\u003esizeof\u003c/span\u003e\u003cspan class=\"br0\"\u003e\u0026#40;\u003c/span\u003e\u003cspan class=\"sy2\"\u003e++\u003c/span\u003e\u003cspan class=\"br0\"\u003e\u0026#40;\u003c/span\u003e\u003cspan class=\"sy2\"\u003e*\u003c/span\u003ep\u003cspan class=\"br0\"\u003e\u0026#41;\u003c/span\u003e\u003cspan class=\"br0\"\u003e\u0026#41;\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e) and unary postfix operators always associate left-to-right (\u003cspan class=\"t-c\"\u003e\u003cspan class=\"mw-geshi c source-c\"\u003ea\u003cspan class=\"br0\"\u003e\u0026#91;\u003c/span\u003e\u003cspan class=\"nu0\"\u003e1\u003c/span\u003e\u003cspan class=\"br0\"\u003e\u0026#93;\u003c/span\u003e\u003cspan class=\"br0\"\u003e\u0026#91;\u003c/span\u003e\u003cspan class=\"nu0\"\u003e2\u003c/span\u003e\u003cspan class=\"br0\"\u003e\u0026#93;\u003c/span\u003e\u003cspan class=\"sy2\"\u003e++\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e is \u003cspan class=\"t-c\"\u003e\u003cspan class=\"mw-geshi c source-c\"\u003e\u003cspan class=\"br0\"\u003e\u0026#40;\u003c/span\u003e\u003cspan class=\"br0\"\u003e\u0026#40;\u003c/span\u003ea\u003cspan class=\"br0\"\u003e\u0026#91;\u003c/span\u003e\u003cspan class=\"nu0\"\u003e1\u003c/span\u003e\u003cspan class=\"br0\"\u003e\u0026#93;\u003c/span\u003e\u003cspan class=\"br0\"\u003e\u0026#41;\u003c/span\u003e\u003cspan class=\"br0\"\u003e\u0026#91;\u003c/span\u003e\u003cspan class=\"nu0\"\u003e2\u003c/span\u003e\u003cspan class=\"br0\"\u003e\u0026#93;\u003c/span\u003e\u003cspan class=\"br0\"\u003e\u0026#41;\u003c/span\u003e\u003cspan class=\"sy2\"\u003e++\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e). Note that the associativity is meaningful for member access operators, even though they are grouped with unary postfix operators: \u003cspan class=\"t-c\"\u003e\u003cspan class=\"mw-geshi c source-c\"\u003ea.\u003cspan class=\"me1\"\u003eb\u003c/span\u003e\u003cspan class=\"sy2\"\u003e++\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e is parsed \u003cspan class=\"t-c\"\u003e\u003cspan class=\"mw-geshi c source-c\"\u003e\u003cspan class=\"br0\"\u003e\u0026#40;\u003c/span\u003ea.\u003cspan class=\"me1\"\u003eb\u003c/span\u003e\u003cspan class=\"br0\"\u003e\u0026#41;\u003c/span\u003e\u003cspan class=\"sy2\"\u003e++\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e and not \u003cspan class=\"t-c\"\u003e\u003cspan class=\"mw-geshi c source-c\"\u003ea.\u003cspan class=\"br0\"\u003e\u0026#40;\u003c/span\u003eb\u003cspan class=\"sy2\"\u003e++\u003c/span\u003e\u003cspan class=\"br0\"\u003e\u0026#41;\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e.\n\u003c/p\u003e\n\u003ch3\u003e\u003cspan class=\"editsection\"\u003e[\u003ca href=\"/mwiki/index.php?title=c/language/operator_precedence\u0026amp;action=edit\u0026amp;section=2\" title=\"Edit section: References\"\u003eedit\u003c/a\u003e]\u003c/span\u003e \u003cspan class=\"mw-headline\" id=\"References\"\u003eReferences\u003c/span\u003e\u003c/h3\u003e\n\u003cdiv class=\"t-ref-std-17\"\u003e\n\u003cul\u003e\u003cli\u003e C17 standard (ISO/IEC 9899:2018): \n\u003c/li\u003e\u003c/ul\u003e\n\u003cdl\u003e\u003cdd\u003e\u003cul\u003e\u003cli\u003e A.2.1 Expressions \n\u003c/li\u003e\u003c/ul\u003e\n\u003c/dd\u003e\u003c/dl\u003e\n\u003c/div\u003e\n\u003cdiv class=\"t-ref-std-11\"\u003e\n\u003cul\u003e\u003cli\u003e C11 standard (ISO/IEC 9899:2011): \n\u003c/li\u003e\u003c/ul\u003e\n\u003cdl\u003e\u003cdd\u003e\u003cul\u003e\u003cli\u003e A.2.1 Expressions \n\u003c/li\u003e\u003c/ul\u003e\n\u003c/dd\u003e\u003c/dl\u003e\n\u003c/div\u003e\n\u003cdiv class=\"t-ref-std-c99\"\u003e\n\u003cul\u003e\u003cli\u003e C99 standard (ISO/IEC 9899:1999): \n\u003c/li\u003e\u003c/ul\u003e\n\u003cdl\u003e\u003cdd\u003e\u003cul\u003e\u003cli\u003e A.2.1 Expressions \n\u003c/li\u003e\u003c/ul\u003e\n\u003c/dd\u003e\u003c/dl\u003e\n\u003c/div\u003e\n\u003cdiv class=\"t-ref-std-c89\"\u003e\n\u003cul\u003e\u003cli\u003e C89/C90 standard (ISO/IEC 9899:1990): \n\u003c/li\u003e\u003c/ul\u003e\n\u003cdl\u003e\u003cdd\u003e\u003cul\u003e\u003cli\u003e A.1.2.1 Expressions \n\u003c/li\u003e\u003c/ul\u003e\n\u003c/dd\u003e\u003c/dl\u003e\n\u003c/div\u003e\n\u003ch3\u003e\u003cspan class=\"editsection\"\u003e[\u003ca href=\"/mwiki/index.php?title=c/language/operator_precedence\u0026amp;action=edit\u0026amp;section=3\" title=\"Edit section: See also\"\u003eedit\u003c/a\u003e]\u003c/span\u003e \u003cspan class=\"mw-headline\" id=\"See_also\"\u003eSee also\u003c/span\u003e\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"/w/c/language/eval_order\" title=\"c/language/eval order\"\u003eOrder of evaluation\u003c/a\u003e of operator arguments at run time.\n\u003c/p\u003e\n\u003ctable class=\"wikitable\"\u003e\n\n\u003ctr style=\"text-align:center\"\u003e\n\u003cth colspan=\"7\"\u003e Common operators\n\u003c/th\u003e\u003c/tr\u003e\n\u003ctr style=\"text-align:center\"\u003e\n\u003ctd\u003e \u003ca href=\"/w/c/language/operator_assignment\" title=\"c/language/operator assignment\"\u003e assignment\u003c/a\u003e\n\u003c/td\u003e\n\u003ctd\u003e \u003ca href=\"/w/c/language/operator_incdec\" title=\"c/language/operator incdec\"\u003e increment\u003cbr /\u003edecrement\u003c/a\u003e\n\u003c/td\u003e\n\u003ctd\u003e \u003ca href=\"/w/c/language/operator_arithmetic\" title=\"c/language/operator arithmetic\"\u003e arithmetic\u003c/a\u003e\n\u003c/td\u003e\n\u003ctd\u003e \u003ca href=\"/w/c/language/operator_logical\" title=\"c/language/operator logical\"\u003e logical\u003c/a\u003e\n\u003c/td\u003e\n\u003ctd\u003e \u003ca href=\"/w/c/language/operator_comparison\" title=\"c/language/operator comparison\"\u003e comparison\u003c/a\u003e\n\u003c/td\u003e\n\u003ctd\u003e \u003ca href=\"/w/c/language/operator_member_access\" title=\"c/language/operator member access\"\u003e member\u003cbr /\u003eaccess\u003c/a\u003e\n\u003c/td\u003e\n\u003ctd\u003e \u003ca href=\"/w/c/language/operator_other\" title=\"c/language/operator other\"\u003e other\u003c/a\u003e\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr style=\"text-align:center\"\u003e\n\u003ctd\u003e\n\u003cp\u003e\u003cspan class=\"t-c\"\u003e\u003cspan class=\"mw-geshi c source-c\"\u003ea \u003cspan class=\"sy1\"\u003e=\u003c/span\u003e b\u003cbr /\u003e\na \u003cspan class=\"sy2\"\u003e+\u003c/span\u003e\u003cspan class=\"sy1\"\u003e=\u003c/span\u003e b\u003cbr /\u003e\na \u003cspan class=\"sy2\"\u003e-\u003c/span\u003e\u003cspan class=\"sy1\"\u003e=\u003c/span\u003e b\u003cbr /\u003e\na \u003cspan class=\"sy2\"\u003e*\u003c/span\u003e\u003cspan class=\"sy1\"\u003e=\u003c/span\u003e b\u003cbr /\u003e\na \u003cspan class=\"sy2\"\u003e/\u003c/span\u003e\u003cspan class=\"sy1\"\u003e=\u003c/span\u003e b\u003cbr /\u003e\na \u003cspan class=\"sy2\"\u003e%\u003c/span\u003e\u003cspan class=\"sy1\"\u003e=\u003c/span\u003e b\u003cbr /\u003e\na \u003cspan class=\"sy3\"\u003e\u0026amp;\u003c/span\u003e\u003cspan class=\"sy1\"\u003e=\u003c/span\u003e b\u003cbr /\u003e\na \u003cspan class=\"sy3\"\u003e|\u003c/span\u003e\u003cspan class=\"sy1\"\u003e=\u003c/span\u003e b\u003cbr /\u003e\na \u003cspan class=\"sy3\"\u003e^\u003c/span\u003e\u003cspan class=\"sy1\"\u003e=\u003c/span\u003e b\u003cbr /\u003e\na \u003cspan class=\"sy1\"\u003e\u0026lt;\u0026lt;=\u003c/span\u003e b\u003cbr /\u003e\na \u003cspan class=\"sy1\"\u003e\u0026gt;\u0026gt;=\u003c/span\u003e b\u003c/span\u003e\u003c/span\u003e\n\u003c/p\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003e\u003cspan class=\"t-c\"\u003e\u003cspan class=\"mw-geshi c source-c\"\u003e\u003cspan class=\"sy2\"\u003e++\u003c/span\u003ea\u003cbr /\u003e\n\u003cspan class=\"sy2\"\u003e--\u003c/span\u003ea\u003cbr /\u003e\na\u003cspan class=\"sy2\"\u003e++\u003c/span\u003e\u003cbr /\u003e\na\u003cspan class=\"sy2\"\u003e--\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\n\u003c/p\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003e\u003cspan class=\"t-c\"\u003e\u003cspan class=\"mw-geshi c source-c\"\u003e\u003cspan class=\"sy2\"\u003e+\u003c/span\u003ea\u003cbr /\u003e\n\u003cspan class=\"sy2\"\u003e-\u003c/span\u003ea\u003cbr /\u003e\na \u003cspan class=\"sy2\"\u003e+\u003c/span\u003e b\u003cbr /\u003e\na \u003cspan class=\"sy2\"\u003e-\u003c/span\u003e b\u003cbr /\u003e\na \u003cspan class=\"sy2\"\u003e*\u003c/span\u003e b\u003cbr /\u003e\na \u003cspan class=\"sy2\"\u003e/\u003c/span\u003e b\u003cbr /\u003e\na \u003cspan class=\"sy2\"\u003e%\u003c/span\u003e b\u003cbr /\u003e\n~a\u003cbr /\u003e\na \u003cspan class=\"sy3\"\u003e\u0026amp;\u003c/span\u003e b\u003cbr /\u003e\na \u003cspan class=\"sy3\"\u003e|\u003c/span\u003e b\u003cbr /\u003e\na \u003cspan class=\"sy3\"\u003e^\u003c/span\u003e b\u003cbr /\u003e\na \u003cspan class=\"sy1\"\u003e\u0026lt;\u0026lt;\u003c/span\u003e b\u003cbr /\u003e\na \u003cspan class=\"sy1\"\u003e\u0026gt;\u0026gt;\u003c/span\u003e b\u003c/span\u003e\u003c/span\u003e\n\u003c/p\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003e\u003cspan class=\"t-c\"\u003e\u003cspan class=\"mw-geshi c source-c\"\u003e\u003cspan class=\"sy3\"\u003e!\u003c/span\u003ea\u003cbr /\u003e\na \u003cspan class=\"sy3\"\u003e\u0026amp;\u0026amp;\u003c/span\u003e b\u003cbr /\u003e\na \u003cspan class=\"sy3\"\u003e||\u003c/span\u003e b\u003c/span\u003e\u003c/span\u003e\n\u003c/p\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003e\u003cspan class=\"t-c\"\u003e\u003cspan class=\"mw-geshi c source-c\"\u003ea \u003cspan class=\"sy1\"\u003e==\u003c/span\u003e b\u003cbr /\u003e\na \u003cspan class=\"sy3\"\u003e!\u003c/span\u003e\u003cspan class=\"sy1\"\u003e=\u003c/span\u003e b\u003cbr /\u003e\na \u003cspan class=\"sy1\"\u003e\u0026lt;\u003c/span\u003e b\u003cbr /\u003e\na \u003cspan class=\"sy1\"\u003e\u0026gt;\u003c/span\u003e b\u003cbr /\u003e\na \u003cspan class=\"sy1\"\u003e\u0026lt;=\u003c/span\u003e b\u003cbr /\u003e\na \u003cspan class=\"sy1\"\u003e\u0026gt;=\u003c/span\u003e b\u003c/span\u003e\u003c/span\u003e\n\u003c/p\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003e\u003cspan class=\"t-c\"\u003e\u003cspan class=\"mw-geshi c source-c\"\u003ea\u003cspan class=\"br0\"\u003e\u0026#91;\u003c/span\u003eb\u003cspan class=\"br0\"\u003e\u0026#93;\u003c/span\u003e\u003cbr /\u003e\n\u003cspan class=\"sy2\"\u003e*\u003c/span\u003ea\u003cbr /\u003e\n\u003cspan class=\"sy3\"\u003e\u0026amp;\u003c/span\u003ea\u003cbr /\u003e\na\u003cspan class=\"sy2\"\u003e-\u003c/span\u003e\u003cspan class=\"sy1\"\u003e\u0026gt;\u003c/span\u003eb\u003cbr /\u003e\na.\u003cspan class=\"me1\"\u003eb\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\n\u003c/p\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003e\u003cspan class=\"t-c\"\u003e\u003cspan class=\"mw-geshi c source-c\"\u003ea\u003cspan class=\"br0\"\u003e\u0026#40;\u003c/span\u003e...\u003cspan class=\"br0\"\u003e\u0026#41;\u003c/span\u003e\u003cbr /\u003e\na, b\u003cbr /\u003e\n\u003cspan class=\"br0\"\u003e\u0026#40;\u003c/span\u003etype\u003cspan class=\"br0\"\u003e\u0026#41;\u003c/span\u003e a\u003cbr /\u003e\na \u003cspan class=\"sy4\"\u003e?\u003c/span\u003e b \u003cspan class=\"sy4\"\u003e:\u003c/span\u003e c\u003cbr /\u003e\n\u003cspan class=\"kw4\"\u003esizeof\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cbr /\u003e\u003cbr /\u003e\n\u003cspan class=\"t-c\"\u003e\u003cspan class=\"mw-geshi c source-c\"\u003e_Alignof\u003c/span\u003e\u003c/span\u003e\u003cbr /\u003e\u003cspan class=\"t-mark-rev t-since-c11\"\u003e(since C11)\u003c/span\u003e\n\u003c/p\u003e\n\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\u003ctable class=\"t-dsc-begin\"\u003e\n\n\u003ctr class=\"t-dsc\"\u003e\n\u003ctd colspan=\"2\"\u003e \u003cdiv class=\"t-dsc-see\"\u003e\u003cspan\u003e\u003ca href=\"/w/cpp/language/operator_precedence\" title=\"cpp/language/operator precedence\"\u003eC++ documentation\u003c/a\u003e\u003c/span\u003e for \u003cspan class=\"\"\u003e\u003cspan\u003eC++ operator precedence\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\n\u003c/td\u003e\u003c/tr\u003e\n\n\u003c/table\u003e\n\n\n\u003chr\u003e\n\n\n# C코드를 ll로 변환 후 Assembly ❤️바꾸는 방법(LLVM\u0026Assembly코드는 M1pro arm64기계 기준임macOS)otool활용[[🔝]](#link)\n\nhttps://economiceco.tistory.com/14882\n\n\u003chr\u003e\n\n# 유료$paid독하게 되새기는 C 프로그래밍[|🔝|](#link)\n\nhttps://inf.run/W34T\n\nhttps://www.inflearn.com/course/%EB%8F%85%ED%95%98%EA%B2%8C-%EB%90%98%EC%83%88%EA%B8%B0%EB%8A%94-c%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/\n\n\n# 자습서: VS Code를 사용하여 Mac에서 C 프로그램 디버깅[[🔝]](#link)\n\nhttps://youtu.be/wKjFVyDbSpA?si=iDI2RC3mMhSeCXSe\n\n- 나도 맥북으로 C언어 개발한다 (feat. VScode)(한국분 자료)\n  - https://youtu.be/BzBaqSHisAs?si=IAFC7pwfUinKcdQM\n\n# VS Code에서 C++ 프로젝트 디버그[[🔝]](#link)\n\nhttps://youtu.be/G9gnSGKYIg4?si=xxmdCBQSWqa0dtSs\n\n# 고생하면서 배우는 C언어 (일본어)苦しんで覚えるＣ言語[[🔝]](#link)\n\nhttps://9cguide.appspot.com/index.html\n\n# C Programming Full Course for free 🕹️ (4hr)[[🔝]](#link)\nhttps://youtu.be/87SH2Cn0s9A\n\n# C / C++ | freeCodeCamp.org[[🔝]](#link)\n\nhttps://youtube.com/playlist?list=PLWKjhJtqVAbmUE5IqyfGYEYjrZBYzaT4m\n\n# Microsoft C++, C, and Assembler documentation(C MSDN)[[🔝]](#link)\n\n- Learn how to use C++, C, and assembly language to develop applications, services, and tools for your platforms and devices.\n\nhttps://learn.microsoft.com/en-us/cpp/?view=msvc-170\n\n# c-language(MS)[[🔝]](#link)\n\nhttps://learn.microsoft.com/en-us/cpp/c-language/?view=msvc-170\n\n# MicroSoft Learn (Samples C)[[🔝]](#link)\n\nhttps://learn.microsoft.com/en-us/samples/browse/?languages=c\n\n\n# Smile Han의 C 언어 프로그래밍[[🔝]](#link)\n\nhttps://youtube.com/playlist?list=PLJqaIeuL7nuFgbxCyhtZ7xBUNhdV9Qy5R\n\n\u003chr\u003e\n\n# The LLVM Compiler Infrastructure[[🔝]](#link)\n\nhttps://llvm.org/\n\n\u003cbr\u003e\n\n# Creating the Node of a Single Linked List[[🔝]](#link)\n\nhttps://youtu.be/DneLxrPmmsw\n\n\u003cbr\u003e\n\n\n## C Programming \u0026 Data Structures Series\n\nhttps://youtube.com/playlist?list=PLBlnK6fEyqRhX6r2uhhlubuF5QextdCSM\n\n\u003cbr\u003e\n\n\u003chr\u003e\n\n\u003cbr\u003e\n\n# C Language Tutorials In Hindi __ 1[[🔝]](#link)\n\nhttps://youtube.com/playlist?list=PLu0W_9lII9aiXlHcLx-mDH1Qul38wD3aR\n\n\u003cbr\u003e\n\n# How I program C | Eskil Steenberg ___ 2[[🔝]](#link)\n\nhttps://youtu.be/443UNeGrFoM\n\n\u003cbr\u003e\n\n# Advanced C: The UB and optimizations that trick good programmers. | Eskil Steenberg[[🔝]](#link)\n\nhttps://youtu.be/w3_e9vZj7D8\n\n\n\u003cbr\u003e\n\n# Modern C and What We Can Learn From It - Luca Sas [ ACCU 2021 ][[🔝]](#link)\n\nhttps://youtu.be/QpAhX-gsHMs\n\n\u003cbr\u003e\n\n# C Language Tutorial Videos[[🔝]](#link)\n\nhttps://youtube.com/playlist?list=PLVlQHNRLflP8IGz6OXwlV_lgHgc72aXlh\n\n\u003cbr\u003e\n\n\u003chr\u003e\n\n# build.sh[[🔝]](#link)\n\n```\n#!/bin/bash\n\nclang -pthread -lm -Wall -Wextra -ggdb -o main main.c\n\nor \n\ngcc -pthread -lm -Wall -Wextra -ggdb -o main main.c\n\n```\n\n\u003cbr\u003e\n\n# delete.sh[[🔝]](#link)\n\n```\n#!/bin/bash\n\nrm -rf main main.dSYM\n\n```\n\n\u003cbr\u003e\n\n# xxd 명령어 이해하기[[🔝]](#link)\n\nhttps://www.tutorialspoint.com/unix_commands/xxd.htm\n\n- 예시 exercise/004string/main.c 참고\n\n```\n$ ./main \"ready\" \"set\" \"go\" | xxd -g 1\n\n00000000: 61 72 67 76 20 3d 20 30 78 31 36 64 37 30 33 32  argv = 0x16d7032\n00000010: 61 30 0a 61 72 67 76 5b 30 5d 20 3d 20 30 78 31  a0.argv[0] = 0x1\n00000020: 36 64 37 30 33 34 64 38 0a 2e 2f 6d 61 69 6e 0a  6d7034d8../main.\n00000030: 61 72 67 76 5b 31 5d 20 3d 20 30 78 31 36 64 37  argv[1] = 0x16d7\n00000040: 30 33 34 64 66 0a 72 65 61 64 79 0a 61 72 67 76  034df.ready.argv\n00000050: 5b 32 5d 20 3d 20 30 78 31 36 64 37 30 33 34 65  [2] = 0x16d7034e\n00000060: 35 0a 73 65 74 0a 61 72 67 76 5b 33 5d 20 3d 20  5.set.argv[3] =\n00000070: 30 78 31 36 64 37 30 33 34 65 39 0a 67 6f 0a     0x16d7034e9.go.\n```\n\n\u003cbr\u003e\n\n\u003chr\u003e\n\n# C Program in Hindi: C Tutorial In Hindi[[🔝]](#link)\n\n[Basic Structure of C Program in Hindi](https://www.youtube.com/watch?v=5SIBB589fAg\u0026t=424s)\n\n\u003cbr\u003e\n\n# Java vs C Data Represintation(Sizse of objects(in bytes))[[🔝]](#link)\n\n\n- 출처 Memory \u0026 Data, Video 3: Memory addresses\n  - https://youtu.be/lzMCuw_5dfM?si=O8haQn_zNYIBMb2r\n\n\u003ctable border=\"1\"\u003e\n    \u003ctr\u003e\n    \u003ctd colspan=\"4\" align=\"center\"\u003eSizes of objects(in bytes)\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr align=\"center\"\u003e\n        \u003ctd\u003eJava\u003cbr\u003edata type\u003c/td\u003e\n        \u003ctd\u003eC\u003cbr\u003edata type\u003c/td\u003e\n        \u003ctd\u003eTypical\u003cbr\u003e32-bit\u003c/td\u003e\n        \u003ctd\u003ex86-64\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr align=\"center\"\u003e\n        \u003ctd\u003eboolean\u003c/td\u003e\n        \u003ctd\u003ebool\u003c/td\u003e\n        \u003ctd\u003e1\u003c/td\u003e\n        \u003ctd\u003e1\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr align=\"center\"\u003e\n        \u003ctd\u003ebyte\u003c/td\u003e\n        \u003ctd\u003echar\u003c/td\u003e\n        \u003ctd\u003e1\u003c/td\u003e\n        \u003ctd\u003e1\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr align=\"center\"\u003e\n        \u003ctd\u003echar\u003c/td\u003e\n        \u003ctd\u003e\u003c/td\u003e\n        \u003ctd\u003e2\u003c/td\u003e\n        \u003ctd\u003e2\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr align=\"center\"\u003e\n        \u003ctd\u003eshort\u003c/td\u003e\n        \u003ctd\u003eshort int\u003c/td\u003e\n        \u003ctd\u003e2\u003c/td\u003e\n        \u003ctd\u003e2\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr align=\"center\"\u003e\n        \u003ctd\u003eint\u003c/td\u003e\n        \u003ctd\u003eint\u003c/td\u003e\n        \u003ctd\u003e4\u003c/td\u003e\n        \u003ctd\u003e4\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr align=\"center\"\u003e\n        \u003ctd\u003efloat\u003c/td\u003e\n        \u003ctd\u003efloat\u003c/td\u003e\n        \u003ctd\u003e4\u003c/td\u003e\n        \u003ctd\u003e4\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr align=\"center\"\u003e\n        \u003ctd\u003e\u003c/td\u003e\n        \u003ctd\u003elong int\u003c/td\u003e\n        \u003ctd\u003e4\u003c/td\u003e\n        \u003ctd\u003e8\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr align=\"center\"\u003e\n        \u003ctd\u003edouble\u003c/td\u003e\n        \u003ctd\u003edouble\u003c/td\u003e\n        \u003ctd\u003e8\u003c/td\u003e\n        \u003ctd\u003e8\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr align=\"center\"\u003e\n        \u003ctd\u003elong\u003c/td\u003e\n        \u003ctd\u003elong long\u003c/td\u003e\n        \u003ctd\u003e8\u003c/td\u003e\n        \u003ctd\u003e8\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr align=\"center\"\u003e\n        \u003ctd\u003e\u003c/td\u003e\n        \u003ctd\u003elong double\u003c/td\u003e\n        \u003ctd\u003e8\u003c/td\u003e\n        \u003ctd\u003e16\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr align=\"center\"\u003e\n        \u003ctd\u003e(reference)\u003c/td\u003e\n        \u003ctd\u003epointer *\u003c/td\u003e\n        \u003ctd\u003e4\u003c/td\u003e\n        \u003ctd\u003e8\u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003cbr\u003e\n\n\u003chr\u003e\n\n\n# 자료 구조[[🔝]](#link)\n\nhttps://github.com/YoungHaKim7/c_project/tree/main/exercise/002stack\n\n- 영어 출처\n  https://en.wikipedia.org/wiki/Association_list\n\n\u003ctable border=\"1\"\u003e\n    \u003ctr\u003e\n    \u003ctd colspan=\"2\" align=\"center\"\u003e자료 구조(Well-known data structures)\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr align=\"center\"\u003e\n        \u003ctd\u003e유형(Type) \u003c/td\u003e\n        \u003ctd\u003e 컬렉션(Collection) , 컨테이너(Container)\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr align=\"center\"\u003e\n        \u003ctd\u003e 추상ADT\u003cbr\u003eAbstract Data Type \u003c/td\u003e\n        \u003ctd\u003e 연관 배열(Associative array), 우선 순위 덱(Priority Deque), 덱(Deque), 리스트(List),\u003cbr\u003e 멀티맵, 우선순위 큐(Priority Queue), 큐(Queue), \u003cbr\u003e집합 (멀티셋, 분리 집합),\u003cbr\u003e 스택(stack) \u003cbr\u003e\nAssociative array(Multimap, Retrieval Data Structure), List, StackQueue(Double-ended queue), Priority queue(Double-ended priority queue), Set(Multiset, Disjoint-set)\n    \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr align=\"center\"\u003e\n        \u003ctd\u003e배열(Array) \u003c/td\u003e\n        \u003ctd\u003e \n비트 배열(Bit Array), 환형 배열(Circular array), 동적 배열(Dynamic Array),\u003cbr\u003e 해시 테이블(Hash Table), 해시드 어레이 트리(Hashed Array Tree), 희소 배열(Sparse array)\n        \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr align=\"center\"\u003e\n        \u003ctd\u003e연결형(Linked) \u003c/td\u003e\n        \u003ctd\u003e 연관 리스트(Association list), \n        \u003cbr\u003e\n        \u003cbr\u003e연결 리스트(Linked List) - 단일연결(Singly Linked List), 이중연결(Doubly Linked List), 원형 연결(Circular Linked List)\u003cbr\u003e\u003cbr\u003eAssociation list,\u003cbr\u003e Linked list, Skip list, Unrolled linked list, XOR linked list\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr align=\"center\"\u003e\n        \u003ctd\u003e트리(Trees) \u003c/td\u003e\n        \u003ctd\u003eB 트리,\u003cbr\u003e 이진 탐색 트리(AA, AVL, 레드-블랙, 자가 균형, splay) \u003cbr\u003e 힙(이진 힙, 피보나치) ,\u003cbr\u003e R 트리( R*, R+, 힐버트),\u003cbr\u003e 트리(해시 트리)\u003cbr\u003e\u003cbr\u003eB-tree, Binary search tree(AA tree, AVL tree, Red–black tree, Self-balancing tree, Splay tree),\u003cbr\u003e Heap(Binary heap, Binomial heap, Fibonacci heap),\u003cbr\u003e R-tree(R* tree, R+ tree, Hilbert R-tree), Trie Hash tree\n    \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr align=\"center\"\u003e\n        \u003ctd\u003e그래프(Graphs) \u003c/td\u003e\n        \u003ctd\u003e이진 결정 다이어그램\u003cbr\u003eBinary decision diagram, Directed acyclic graph, Directed acyclic word graph \u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003cbr\u003e\n\n\u003chr\u003e\n\n# Big-O Cheat Sheet(그림으로 이쁘게)[[🔝]](#link)\n\nhttps://dev.to/deciduously/big-o-cheat-sheet-3i7d\n\n\u003cbr\u003e\n\n\u003cbr\u003e\n\n\u003chr\u003e\n\n\u003cbr\u003e\n\n\u003chr\u003e\n\n# C Languages Tutorial[[🔝]](#link)\n\nhttps://github.com/EbookFoundation/free-programming-books/blob/main/books/free-programming-books-langs.md#c\n\n# C Tutorial 2[[🔝]](#link)\n\nhttps://www.tutorialspoint.com/cprogramming/\n\n# C 3[[🔝]](#link)\n\n[\"Let us C - Yashavant Kanetkar (PDF) (🗃️ latest 14th edition)](https://ia903402.us.archive.org/1/items/let-us-c/LET%20US%20C.pdf)\n\n# Compilers[[🔝]](#link)\n\nUse every available and reasonable set of warning options. Some warning options only work with optimizations enabled, or work better the higher the chosen level of optimization is, for example \n```-Wnull-dereference```\n with GCC.\n\nYou should use as many compilers as you can for your platform(s). Each compiler implements the standard slightly differently and supporting multiple will help ensure the most portable, most reliable code.\n\n# GCC / Clang[[🔝]](#link)\n```-Wall -Wextra -Wshadow -Wnon-virtual-dtor -pedantic``` \n- use these and consider the following (see descriptions below)\n\n## see descriptions below\n\n- ```-pedantic``` - Warn on language extensions\n\n- ```-Wall -Wextra``` reasonable and standard\n\n- ```-Wshadow``` warn the user if a variable declaration shadows one from a parent context\n\n- ```-Wnon-virtual-dtor``` warn the user if a class with virtual functions has a non-virtual destructor. This helps catch hard to track down memory errors\n\n- ```-Wold-style-cast``` warn for c-style casts\n\n- ```-Wcast-align``` warn for potential performance problem casts\n-Wunused warn on anything being unused\n\n- ```-Woverloaded-virtual``` warn if you overload (not override) a virtual function\n\n- ```-Wpedantic``` (all versions of GCC, Clang \u003e= 3.2) warn if non-standard C++ is used\n\n- ```-Wconversion``` warn on type conversions that may lose data\n\n- ```-Wsign-conversion``` (Clang all versions, GCC \u003e= 4.3) warn on sign conversions\n\n- ```-Wmisleading-indentation``` (only in GCC \u003e= 6.0) warn if indentation implies blocks where blocks do not exist\n\n- ```-Wduplicated-cond``` (only in GCC \u003e= 6.0) warn if if / else chain has duplicated conditions\n\n- ```-Wduplicated-branches``` (only in GCC \u003e= 7.0) warn if if / else branches have duplicated code\n\n- ```-Wlogical-op``` (only in GCC) warn about logical operations being used where bitwise were probably wanted\n\n- ```-Wnull-dereference``` (only in GCC \u003e= 6.0) warn if a null dereference is detected\n\n- ```-Wuseless-cast``` (only in GCC \u003e= 4.8) warn if you perform a cast to the same type\n\n- ```-Wdouble-promotion``` (GCC \u003e= 4.6, Clang \u003e= 3.8) warn if float is implicitly promoted to double\n\n- ```-Wformat=2``` warn on security issues around functions that format output (i.e., printf)\n\n- ```-Wlifetime``` (only special branch of Clang currently) shows object lifetime issues\n\n- ```-Wimplicit-fallthrough``` Warns when case statements fall-through. (Included with -Wextra in GCC, not in clang)\n\nConsider using ```-Weverything``` and disabling the few warnings you need to on Clang\n\n- ```-Weffc++``` warning mode can be too noisy, but if it works for your project, use it also.\n\n\nhttps://github.com/cpp-best-practices/cppbestpractices/blob/master/02-Use_the_Tools_Available.md\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyounghakim7%2Fc_project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyounghakim7%2Fc_project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyounghakim7%2Fc_project/lists"}