Module ā§§ ¡ C-āϰ āϏāĻā§āĻā§ āĻĒāϰāĻŋāĻāϝāĻŧ: āĻĒā§āϰāĻĨāĻŽ program, āĻāĻŋāĻšā§āύ āϧāϰ⧠āϧāϰā§
Syntax āĻāϰ semantics: āĻā§āϞ āĻšāĻāϝāĻŧāĻžāϰ āĻĻā§āĻ āϰāĻāĻŽ
āĻāĻ lesson-āĻ āϝāĻž āĻļāĻŋāĻāĻŦā§
- Syntax error āĻāϰ semantic error-āϰ āϤāĻĢāĻžāϤ āĻāĻ āĻŦāĻžāĻā§āϝ⧠āĻŦāϞāϤ⧠āĻĒāĻžāϰāĻŦā§āĨ¤
- Compiler-āϰ āĻāĻāĻžāϰā§āĻāĻž āĻā§āύāĻž message āĻĒāĻĄāĻŧā§ āĻŦāϞāϤ⧠āĻĒāĻžāϰāĻŦā§ āĻāϏāϞ⧠āĻā§ āĻāĻā§āĻā§āĨ¤
- Compiler āϤā§āĻŽāĻžāϰ program āύāĻŋāϤ⧠āϰāĻžāĻāĻŋ āύāĻž āĻšāϞ⧠āϏā§āĻāĻž āĻā§āύ āĻāĻĒāĻāĻžāϰ, āĻŦā§āĻāĻžāϤ⧠āĻĒāĻžāϰāĻŦā§āĨ¤
"āϏāĻžāĻāĻā§āϞāĻāĻž āĻĒāĻžāĻšāĻžāĻĄāĻŧ āĻā§āϝāĻŧā§ āĻĢā§āϞāϞāĨ¤" āĻŦā§āϝāĻžāĻāϰāĻŖā§āϰ āĻĒā§āϰāϤāĻŋāĻāĻž āύāĻŋāϝāĻŧāĻŽ āĻŽāĻžāύāĻž āĻšāϝāĻŧā§āĻā§āĨ¤ āĻŦāĻžāĻā§āϝāĻāĻžāϰ āϤāĻŦā§ āĻā§āύ⧠āĻŽāĻžāύ⧠āύā§āĻāĨ¤
Program āĻ āĻŋāĻ āĻāĻ āĻĻā§āĻ āϰāĻāĻŽā§āĻ āĻā§āϞ āĻšāϝāĻŧāĨ¤ āĻšāϝāĻŧ compiler āϤā§āĻŽāĻžāϰ āϞā§āĻāĻž āĻĒāĻĄāĻŧāϤā§āĻ āĻĒāĻžāϰ⧠āύāĻž, āύāϝāĻŧ āϏ⧠āύāĻŋāĻā§āĻāϤāĻāĻžāĻŦā§ āĻĒāĻĄāĻŧā§ āĻāĻŽāύ āĻāĻŋāĻā§ āĻāϰ⧠āϝā§āĻāĻž āϤā§āĻŽāĻŋ āĻāĻžāĻāύāĻŋāĨ¤ āĻĒā§āϰāĻĨāĻŽ āϰāĻāĻŽāĻāĻž āϤā§āĻŽāĻžāĻā§ āĻāĻ āϏā§āĻā§āύā§āĻĄā§ āĻĨāĻžāĻŽāĻŋāϝāĻŧā§ āĻĻā§āϝāĻŧāĨ¤ āĻĻā§āĻŦāĻŋāϤā§āϝāĻŧ āϰāĻāĻŽāĻāĻž āĻāĻ āĻŽāĻžāϏ āϞā§āĻāĻŋāϝāĻŧā§ āĻĨāĻžāĻāϤ⧠āĻĒāĻžāϰā§āĨ¤
Maria āĻāĻŋāĻā§āĻā§āϏ āĻāϰāϞ, Bob-āϰ program 5 āĻŦāĻžāĻ 3 āĻāϰā§āϰ āĻāύā§āϝ 8 āĻāĻžāĻĒāĻā§ āĻā§āύāĨ¤ Bob āĻŦāϞāϞ, compiler āϤ⧠āĻā§āύ⧠error āĻĻā§āϝāĻŧāύāĻŋāĨ¤ āĻāĻĨāĻžāĻāĻž āϏāϤā§āϝāĻŋ, āĻāϰ āĻāĻāĻž āĻā§āύ⧠āϝā§āĻā§āϤāĻŋ āύāĻžāĨ¤
āĻā§āϞ āĻšāĻāϝāĻŧāĻžāϰ āĻĻā§āĻ āϰāĻāĻŽ, āĻāĻ āĻŦāĻžāĻā§āϝ⧠āĻāϰā§
Syntax āĻŽāĻžāύ⧠āĻŦā§āϝāĻžāĻāϰāĻŖāĨ¤ āĻāĻŋāĻšā§āύāĻā§āϞā§āϰ āĻāĻ āϏāĻžāĻāĻžāύ⧠āϰā§āĻĒāĻāĻž āĻŦā§āϧ C āĻāĻŋ āύāĻžāĨ¤ Compiler āϏā§āĻāĻž āĻ āĻŋāĻ āĻāϰā§, āĻāϰ āϏ⧠āĻāĻāύ⧠āĻĻā§āĻŦāĻŋāϧāĻžāϝāĻŧ āĻĨāĻžāĻā§ āύāĻžāĨ¤
Semantics āĻŽāĻžāύ⧠āĻ āϰā§āĻĨāĨ¤ āϧāϰ⧠āĻāĻāĻž āĻŦā§āϧ CāĨ¤ āϤāĻžāĻšāϞ⧠āĻāĻāĻž āĻāϏāϞ⧠āĻā§ āĻāϰāĻā§? āĻāϰ āĻāϤā§āϤāϰ āĻā§āĻŦāϞ āϤā§āĻŽāĻŋ āĻĻāĻŋāϤ⧠āĻĒāĻžāϰā§, āĻāĻžāϰāĻŖ āϤā§āĻŽāĻŋ āĻā§ āĻā§āϝāĻŧā§āĻāĻŋāϞ⧠āϏā§āĻāĻž āĻā§āĻŦāϞ āϤā§āĻŽāĻŋāĻ āĻāĻžāύā§āĨ¤
āϤāĻžāĻ syntax error āĻŽāĻžāύ⧠āĻāĻŽāύ āĻāĻāĻāĻž āĻŦāĻžāĻā§āϝ āϝā§āĻāĻž āĻŽā§āĻļāĻŋāύ āĻĒāĻĄāĻŧāϤā§āĻ āĻĒāĻžāϰ⧠āύāĻž, āĻāϰ semantic error āĻŽāĻžāύ⧠āϏ⧠āĻĒāĻĄāĻŧā§ āĻā§āϞ āύāĻŋāϰā§āĻĻā§āĻļāĻāĻž āĻŦā§āĻā§ āύā§āϝāĻŧāĨ¤
Syntax error: āϝ⧠āĻāĻāĻžāϰā§āĻāĻž message āϤā§āĻŽāĻŋ āϏāϤā§āϝāĻŋāĻ āĻĻā§āĻāĻŦā§
āύāĻŋāĻā§āϰ table-āϰ āĻĒā§āϰāϤāĻŋāĻāĻž message GCC 12-āϰ āϏāϤā§āϝāĻŋāĻāĻžāϰā§āϰ output, āĻŽāĻžāύ⧠Playground-āϰ āĻĒā§āĻāύā§āϰ compiler-āĻāĻžāϰāĨ¤ āĻāĻāĻžāĻā§ āĻŽā§āĻāϏā§āĻĨ āĻāϰāĻžāϰ āϤāĻžāϞāĻŋāĻāĻž āύāĻž āĻā§āĻŦā§ āĻāĻāĻāĻž āϤāĻžāϞāĻŋāĻāĻž āĻšāĻŋāϏā§āĻŦā§ āĻĒāĻĄāĻŧā§āĨ¤ āϤā§āĻŽāĻžāϰ message-āϰ āĻā§āĻšāĻžāϰāĻžāĻāĻž āĻā§āĻāĻā§ āύāĻžāĻ, āĻāϰ āϏāĻžāϰāĻŋāĻāĻžāĻ āĻŦāϞ⧠āĻĻā§āĻŦā§ āĻā§ āĻāĻā§āĻā§āĨ¤
| āϤā§āĻŽāĻŋ āϝāĻž āϞāĻŋāĻā§āĻ | GCC 12 āϝāĻž āĻŦāϞ⧠| āĻāϏāϞ⧠āϝāĻž āĻāĻā§āĻā§ |
|---|---|---|
Statement-āϰ āĻĒāϰ⧠; āύā§āĻ | error: expected ';' before 'return' | Statement-āĻāĻž āĻļā§āώāĻ āĻšāϝāĻŧāύāĻŋāĨ¤ āĻĻā§āώāĻāĻž āϝ⧠āϞāĻžāĻāύā§āϰ āύāĻžāĻŽ āĻŦāϞāĻā§ āϤāĻžāϰ āĻāĻĒāϰā§āϰ āϞāĻžāĻāύ⧠|
| āĻāĻāĻāĻž block āĻā§āϞāĻž āϰā§āĻā§ āĻĻā§āĻāϝāĻŧāĻž | error: expected declaration or statement at end of input | āĻāĻāĻāĻž brace-āϰ āϏāĻā§āĻā§ āύā§āĻ, āĻāϰ compiler āĻā§āϰ āĻĒā§āϝāĻŧā§āĻā§ file-āϰ āĻāĻāĻĻāĻŽ āĻļā§āώ⧠|
Printf("Hi\n"); | warning: implicit declaration of function 'Printf', āϤāĻžāϰāĻĒāϰ undefined reference to 'Printf' | C āĻā§āĻ āĻāϰ āĻŦāĻĄāĻŧ āĻšāĻžāϤā§āϰ āĻ āĻā§āώāϰ āĻāϞāĻžāĻĻāĻž āĻā§āύā§, āϤāĻžāĻ āĻāĻāĻž āĻāϞāĻžāĻĻāĻž āύāĻžāĻŽ, āĻāϰ āĻāĻāĻž āĻā§āĻ āϞā§āĻā§āύāĻŋ |
#include <stdio.h> āύā§āĻ | warning: implicit declaration of function 'printf' | Compiler printf-āϰ āύāĻžāĻŽāĻ āĻļā§āύā§āύāĻŋ, āĻā§āĻšāĻžāϰāĻžāĻāĻž āĻ
āύā§āĻŽāĻžāύ āĻāϰā§āĻā§, āĻāϰ āϤāĻŦā§āĻ build āĻāϰā§āĻā§ |
int 2marks = 5; | error: invalid suffix "marks" on integer constant | āύāĻžāĻŽ āĻ
āĻā§āĻ āĻĻāĻŋāϝāĻŧā§ āĻļā§āϰ⧠āĻšāϤ⧠āĻĒāĻžāϰ⧠āύāĻž, āϤāĻžāĻ compiler 2marks-āĻā§ āϏāĻāĻā§āϝāĻž āϧāϰ⧠āύāĻŋāϝāĻŧā§āĻā§ |
int total-marks = 5; | error: expected '=', ',', ';', 'asm' or '__attribute__' before '-' token | Hyphen āĻšāϞ⧠minus operatorāĨ¤ āύāĻžāĻŽā§ underscore āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠|
int int = 5; | error: two or more data types in declaration specifiers | Keyword āϏāĻāϰāĻā§āώāĻŋāϤ, āĻāĻāĻž āĻāĻāύ⧠āύāĻžāĻŽ āĻšāϤ⧠āĻĒāĻžāϰ⧠āύāĻž |
| Declare āύāĻž āĻāϰāĻž āĻāĻāĻāĻž āύāĻžāĻŽ | error: 'count' undeclared (first use in this function) | āĻŦāĻžāύāĻžāύā§āϰ āĻā§āϞ, āĻ āĻĨāĻŦāĻž āύāĻžāĻŽāĻāĻž āĻ āύā§āϝ āĻāĻāĻāĻž block-āϰ āĻā§āϤāϰ⧠āĻĨāĻžāĻā§ |
#include <studio.h> | fatal error: studio.h: No such file or directory | Preprocessor āϧāĻžāĻĒ 1-āĻāĻ āĻĨā§āĻŽā§ āĻā§āĻā§āĨ¤ āĻāĻŋāĻā§āĻ compile āĻšāϝāĻŧāύāĻŋ |
/* outer /* inner */ outer */ | error: unknown type name 'outer' | Comment-āϰ āĻā§āϤāϰ⧠comment āĻŦāϏ⧠āύāĻžāĨ¤ āĻĒā§āϰāĻĨāĻŽ */ āĻāĻāĻž āĻŦāύā§āϧ āĻāϰā§āĻā§, āĻŦāĻžāĻāĻŋāĻāĻž code |
if (marks = 90) | Playground-āĻ āĻāĻŋāĻā§āĻ āύāĻž; -Wall āĻĻāĻŋāϞ⧠warning: suggest parentheses around assignment used as truth value | Syntax āĻŦā§āϧ, āĻŽāĻžāύā§āĻāĻž āĻĒā§āϰāĻžāϝāĻŧ āύāĻŋāĻļā§āĻāĻŋāϤāĻāĻžāĻŦā§ āĻā§āϞāĨ¤ āĻĒāϰā§āϰ āĻ āĻāĻļāĻāĻž āĻĻā§āĻā§ |
Version-āϰ āĻāĻāĻāĻž āĻāĻĨāĻžāĨ¤ āϤāĻŋāύ āĻāϰ āĻāĻžāϰ āύāĻŽā§āĻŦāϰ āϏāĻžāϰāĻŋ GCC 12-āϤ⧠warning, āĻāϰ Playground āĻāĻāĻžāĻ āĻāĻžāϞāĻžāϝāĻŧāĨ¤ GCC 14 āĻĻā§āĻāĻāĻžāĻā§āĻ error āĻŦāĻžāύāĻžāϝāĻŧāĨ¤ Playground āϝ⧠program build āĻāϰ⧠āϏā§āĻāĻž āϤā§āĻŽāĻžāϰ āύāĻŋāĻā§āϰ compiler āύāĻŋāϤ⧠āύāĻž āĻāĻžāĻāϞ⧠āĻāĻžāϰāĻŖāĻāĻž āϏāĻžāϧāĻžāϰāĻŖāϤ āĻāĻāĻžāĻāĨ¤
āϤāĻžāĻ syntax error āĻāĻāύā§āĻ āϰāĻšāϏā§āϝ āύāĻžāĨ¤ āĻāĻāĻž āĻāĻāĻāĻž table-āϰ āĻāĻāĻāĻž āĻŦāĻžāĻā§āϝ, āĻāϰ table-āĻāĻž āĻāĻ āĻŽāĻžāϏā§āϰ āĻŽāϧā§āϝā§āĻ āϤā§āĻŽāĻžāϰ āĻŽā§āĻāϏā§āĻĨ āĻšāϝāĻŧā§ āϝāĻžāĻŦā§āĨ¤
Semantic error: compiler-āϰ āĻā§āύ⧠āĻŽāϤ āύā§āĻ
Bob-āϰ program-āĻāĻž āύāĻŋāĻā§ āĻĒā§āϰā§āĻāĻž āĻāĻā§āĨ¤ āĻāĻāĻž āĻļā§āύā§āϝ warning-āĻ compile āĻšāϝāĻŧāĨ¤
#include <stdio.h>
int main(void)
{
int length = 5;
int width = 3;
int area = length + width; /* legal C, wrong meaning */
printf("Area = %d\n", area);
return 0;
}
Area = 8
5 āĻŦāĻžāĻ 3 āĻāϰā§āϰ āĻā§āώā§āϤā§āϰāĻĢāϞ 15āĨ¤ "Area" āĻļāĻŦā§āĻĻāĻāĻžāϰ āĻŽāĻžāύ⧠compiler āĻāĻžāύ⧠āύāĻžāĨ¤ āϏ⧠āĻāĻžāύ⧠āϤā§āĻŽāĻŋ āĻĻā§āĻāĻāĻž integer āϝā§āĻ āĻāϰāϤ⧠āĻŦāϞā§āĻ, āĻāϰ āĻĻā§āĻāĻāĻž integer āϝā§āĻ āĻāϰāĻž āĻĒā§āϰā§āĻĒā§āϰāĻŋ āĻŦā§āϧāĨ¤
āĻāĻ lesson āĻĨā§āĻā§ āĻāĻ āĻŦāĻžāĻā§āϝāĻāĻžāĻ āϏāĻā§āĻā§ āύāĻŋāϝāĻŧā§ āϝāĻžāĻāĨ¤ Compiler āϤā§āĻŽāĻžāϰ āĻŦā§āϝāĻžāĻāϰāĻŖ āĻĒāĻžāĻšāĻžāϰāĻž āĻĻā§āϝāĻŧāĨ¤ āĻ āϰā§āĻĨ āĻĒāĻžāĻšāĻžāϰāĻž āĻĻāĻžāĻ āĻā§āĻŦāϞ āϤā§āĻŽāĻŋāĨ¤
āϤāĻžāĻ āĻĒāϰāĻŋāώā§āĻāĻžāϰ āĻāĻāĻāĻž build āϤā§āĻŽāĻžāĻā§ āĻŦāϞā§, āĻŽā§āĻļāĻŋāύ āϤā§āĻŽāĻžāϰ āύāĻŋāϰā§āĻĻā§āĻļāĻā§āϞ⧠āĻŦā§āĻā§āĻā§, āĻāϰ āύāĻŋāϰā§āĻĻā§āĻļāĻā§āϞ⧠āĻ āĻŋāĻ āĻāĻŋāϞ āĻāĻŋ āύāĻž āϤāĻž āύāĻŋāϝāĻŧā§ āĻāĻŋāĻā§āĻ āĻŦāϞ⧠āύāĻžāĨ¤
Assignment āĻāϰ comparison: āĻāĻ keystroke-āϰ āĻĢāĻžāĻāĻĻ
C-āϤ⧠= āĻāĻāĻāĻž āĻŽāĻžāύ āĻŦāϏāĻžāϝāĻŧ, āĻāϰ == āĻĻā§āĻāĻāĻž āĻŽāĻžāύ āĻŽā§āϞāĻžāϝāĻŧāĨ¤ āĻĻā§āĻāĻāĻž āĻāĻāĻāĻž keystroke-āϰ āĻĻā§āϰāϤā§āĻŦā§, āĻāϰ āĻāϰāĻž āĻāϞā§āĻā§ āĻāĻŋāύāĻŋāϏ āĻŦā§āĻāĻžāϝāĻŧāĨ¤
āĻāĻāĻž āĻŦāĻŋāĻĒāĻā§āĻāύāĻ āĻšāĻāϝāĻŧāĻžāϰ āĻāĻžāϰāĻŖāĻāĻž āĻšāϞā§, = āĻā§āύ⧠statement āύāĻžāĨ¤ āĻāĻāĻž āĻāĻāĻāĻž expression, āĻāϰ expression-āϰ āĻāĻāĻāĻž āĻŽāĻžāύ āĻĨāĻžāĻā§āĨ¤ marks = 60-āϰ āĻŽāĻžāύ 60, āϤāĻžāĻ āĻāĻāĻž āĻāĻžāĻĒāĻžāĻ āϝāĻžāϝāĻŧ, āĻāϰ Example 3 āĻ āĻŋāĻ āϏā§āĻāĻžāĻ āĻāϰā§āĨ¤
āĻĒāϰā§, Module 5-āĻ, āĻāĻā§āϞ⧠āϤā§āĻŽāĻŋ if-āϰ āĻā§āϤāϰ⧠āĻŦāϏāĻžāĻŦā§āĨ¤ āϏā§āĻāĻžāύ⧠āĻļā§āύā§āϝ āύāĻž āĻāĻŽāύ āϝā§āĻā§āύ⧠āĻŽāĻžāύ āϏāϤā§āϝāĻŋ āĻŦāϞ⧠āĻā§āύāĻž āĻšāϝāĻŧāĨ¤ āϤāĻžāĻ if (marks = 90) 90 āĻŦāϏāĻžāϝāĻŧ, āĻļā§āύā§āϝ āύāĻž āĻāĻŽāύ āĻāĻāĻāĻž āĻŽāĻžāύ āĻĻā§āĻā§, āĻāϰ āĻļāĻžāĻāĻžāĻāĻž āϏāĻŦ āϏāĻŽāϝāĻŧ āĻāĻžāϞāĻžāϝāĻŧāĨ¤ āĻāĻ āĻāĻāĻāĻž keystroke-āϰ āĻĒā§āĻāύ⧠software-āϰ āĻĻā§āύāĻŋāϝāĻŧāĻž āĻŦāĻŋāĻĒā§āϞ āĻāĻžāĻāĻž āĻā§āĻāϝāĻŧā§āĻā§āĨ¤
āĻāĻāĻāĻž āĻŦāĻžāĻāĻāĻžāϰ āĻāĻĒāĻžāϝāĻŧ āĻšāϞ⧠āϏāĻāĻā§āϝāĻžāĻāĻž āĻāĻā§ āϞā§āĻāĻž: if (90 == marks)āĨ¤ āĻāĻāĻžāύ⧠āĻšāĻžāϤ āĻĢāϏāĻā§ āĻāĻāĻāĻž = āϞāĻŋāĻāϞ⧠compiler āϰāĻžāĻāĻŋ āĻšāĻŦā§ āύāĻž, āĻāĻžāϰāĻŖ 90 āϏāĻāĻā§āϝāĻžāĻāĻžāϰ āĻā§āϤāϰ⧠āĻāĻŋāĻā§ āĻŦāϏāĻžāύ⧠āϝāĻžāϝāĻŧ āύāĻžāĨ¤ āĻāĻ āĻ
āĻā§āϝāĻžāϏāĻāĻžāϰ āύāĻžāĻŽ Yoda condition, āĻāĻžāϰāĻŖ āĻļā§āύāϤ⧠āĻāϞā§āĻā§ āϞāĻžāĻā§āĨ¤
āϤāĻžāĻ == āĻāĻāĻāĻž āĻĒā§āϰāĻļā§āύ āĻāϰā§, = āĻāĻāĻāĻž āĻāĻĻā§āĻļ āĻĻā§āϝāĻŧ, āĻāϰ compiler āĻĻā§āĻāĻāĻžāϤā§āĻ āĻā§āĻļāĻŋāĨ¤
āĻāĻ āϏā§āĻā§āύā§āĻĄā§āϰ āϏāĻžāϰāĻžāĻ āĻāϰ āĻāĻ āĻŽāĻžāϏā§āϰ āϏāĻžāϰāĻžāĻ
Build āĻāĻāĻā§ āĻā§āϞ⧠āĻŽāύ⧠āĻšāϝāĻŧ compiler āĻā§āĻāϝāĻŧāĻžāϰā§āϤā§āĻŽāĻŋ āĻāϰāĻā§āĨ¤ āĻŦā§āϝāĻžāĻĒāĻžāϰāĻāĻž āĻāϞā§āĻā§āĨ¤ āϏ⧠āϝ⧠āĻĒā§āϰāϤāĻŋāĻāĻž error āĻāĻžāĻĒā§, āϏā§āĻāĻž āĻāĻŽāύ āĻāĻāĻāĻž bug āϝāĻžāϰ āĻĒāĻŋāĻā§ āϤā§āĻŽāĻžāĻā§ āĻāĻāĻžāĻŽā§ āϏāĻĒā§āϤāĻžāĻšā§ āύāĻŋāϤ⧠āĻšāĻŦā§ āύāĻžāĨ¤
Syntax āĻāϰ semantics-āϰ āĻŽāĻžāĻā§āϰ āĻĢāĻžāĻāĻāĻāĻžāϤā§āĻ āĻāϏāϞ bug-āϰāĻž āĻĨāĻžāĻā§, āĻāϰ āĻĻā§āĻāĻāĻž āĻŦāĻŋāĻā§āϝāĻžāϤ āĻāĻāύāĻž āĻĢāĻžāĻāĻāĻāĻžāϰ āĻāĻāĻžāϰ āĻĻā§āĻāĻŋāϝāĻŧā§ āĻĻā§āϝāĻŧāĨ¤
2014 āϏāĻžāϞ⧠Apple-āϰ TLS code-āĻ āĻāĻāĻāĻž bug āĻŦā§āϰā§āϝāĻŧ, āϝāĻžāϰ āύāĻžāĻŽ goto failāĨ¤ āĻāĻāĻāĻž goto fail; āϞāĻžāĻāύ āĻĻā§āĻāĻŦāĻžāϰ āϞā§āĻāĻž āĻšāϝāĻŧā§āĻāĻŋāϞāĨ¤ Syntax āĻāĻŋāϞ āύāĻŋāĻā§āĻāϤ, āĻĻā§āĻŦāĻŋāϤā§āϝāĻŧ āĻāĻĒāĻŋāĻāĻž certificate-āϰ āĻāĻāĻāĻž āϝāĻžāĻāĻžāĻ āĻāĻĄāĻŧāĻŋāϝāĻŧā§ āϝā§āϤ, āĻāϰ āϝ⧠connection āĻŦāĻžāϤāĻŋāϞ āĻšāĻāϝāĻŧāĻžāϰ āĻāĻĨāĻž āϏā§āĻā§āϞ⧠āĻŽā§āύ⧠āύā§āĻāϝāĻŧāĻž āĻšāϤā§āĨ¤
2008 āϏāĻžāϞ⧠Debian-āϰ āĻāĻāĻāύ maintainer OpenSSL āĻĨā§āĻā§ āĻĻā§āĻāĻāĻž āϞāĻžāĻāύ āϏāϰāĻŋāϝāĻŧā§ āĻĻā§āύ, memory āĻĒāϰā§āĻā§āώāĻžāϰ āĻāĻāĻāĻž warning āĻĨāĻžāĻŽāĻžāϤā§āĨ¤ Code āϤāĻāύ⧠compile āĻšāϝāĻŧāĨ¤ āϏā§āĻ āϏāĻā§āĻā§ random āϏāĻāĻā§āϝāĻž āϤā§āϰāĻŋāϰ āĻ āĻāĻļāĻāĻž āĻĒāĻā§āĻā§ āĻšāϝāĻŧā§ āϝāĻžāϝāĻŧ, āĻāϰ āĻĻā§āĻ āĻŦāĻāϰ āϧāϰ⧠Debian-āĻ āĻŦāĻžāύāĻžāύ⧠āĻĒā§āϰāϤāĻŋāĻāĻž key āĻāϏā§āĻā§ āĻā§āĻā§āĻ āĻāĻāĻāĻž āϏā§āĻ āĻĨā§āĻā§āĨ¤
āϤāĻžāĻ compiler āϏāϏā§āϤāĻž āĻā§āϞāĻā§āϞ⧠āϧāϰā§, āĻāϰ āĻĻāĻžāĻŽāĻŋ āĻā§āϞāĻā§āϞ⧠āϏāĻŦāĻ semanticāĨ¤
Message āĻĒāĻĄāĻŧāĻžāϰ āϤāĻŋāύāĻāĻž āĻ āĻā§āϝāĻžāϏ
āĻļā§āϧ⧠āĻĒā§āϰāĻĨāĻŽ error-āĻāĻž āĻĒāĻĄāĻŧā§āĨ¤ āĻāĻāĻāĻž āĻā§āϞ āĻĨā§āĻā§ āĻĒā§āϰāĻžāϝāĻŧāĻ āĻŦāĻŋāĻļāĻāĻž message āĻāϏā§, āĻāĻžāϰāĻŖ āĻĒā§āϰāĻĨāĻŽ āĻā§āϞāĻŽāĻžāϞā§āϰ āĻĒāϰ compiler āϤā§āĻŽāĻžāϰ program āĻā§āϞāĻāĻžāĻŦā§ āĻĒāĻĄāĻŧāĻā§āĨ¤ āĻĒā§āϰāĻĨāĻŽāĻāĻž āϏāĻžāϰāĻžāĻ, āĻāĻŦāĻžāϰ build āĻāϰā§āĨ¤
āϝ⧠āϞāĻžāĻāύā§āϰ āύāĻžāĻŽ āĻŦāϞāĻā§, āϤāĻžāϰ āĻāĻĒāϰā§āϰ āϞāĻžāĻāύāĻāĻž āĻĻā§āĻā§āĨ¤ āĻŦāĻžāĻĻ āĻĒāĻĄāĻŧāĻž semicolon-āϰ āĻāĻŦāϰ āĻāϏ⧠āĻĒāϰā§āϰ statement āϝā§āĻāĻžāύ⧠āĻļā§āϰā§, āϏā§āĻāĻžāύ āĻĨā§āĻā§; semicolon āϝā§āĻāĻžāύ⧠āĻŦāϏāĻžāϰ āĻāĻĨāĻž āĻāĻŋāϞ āϏā§āĻāĻžāύ āĻĨā§āĻā§ āύāĻžāĨ¤
āĻšā§āĻŦāĻšā§ āĻļāĻŦā§āĻĻāĻā§āϞ⧠āĻā§āĻā§ āύāĻžāĻāĨ¤ āĻā§āĻāĻā§ expected declaration or statement at end of input, "āĻ
āĻĻā§āĻā§āϤ brace error" āύāĻžāĨ¤ āĻšā§āĻŦāĻšā§ āĻļāĻŦā§āĻĻ āĻāĻāĻāĻž debugging-āϰ āĻšāĻžāϤāĻŋāϝāĻŧāĻžāϰ, āĻāϰ āϏā§āĻāύā§āϝāĻ āĻĒāϰā§āϰ lesson C-āϰ āĻĒā§āϰāϤāĻŋāĻāĻž āĻāĻŋāĻšā§āύā§āϰ āύāĻžāĻŽ āĻļā§āĻāĻžāϝāĻŧāĨ¤
āĻĒā§āϰāϤāĻŋāĻāĻž GCC message-āϰ āĻāĻĄāĻŧāύ
hello.c : 5 : 12 : error : expected ';' before 'return'
| | | | |
file line column severity what the compiler expected
- file āĻāϰ line āĻŦāϞ⧠compiler āĻšāĻžāϞ āĻāĻžāĻĄāĻŧāĻžāϰ āϏāĻŽāϝāĻŧ āĻā§āĻĨāĻžāϝāĻŧ āĻāĻŋāϞ, āϤā§āĻŽāĻŋ āĻā§āĻĨāĻžāϝāĻŧ āĻā§āϞ āĻāϰā§āĻ āϏā§āĻāĻž āϏāĻŦ āϏāĻŽāϝāĻŧ āύāĻžāĨ¤
- column āĻšāϞ⧠āĻāĻ āϞāĻžāĻāύ⧠character-āϰ āĻāĻžāϝāĻŧāĻāĻž, āĻāϰ āĻāĻāĻž āϏāĻžāϧāĻžāϰāĻŖāϤ āĻāĻāĻĻāĻŽ āĻ āĻŋāĻāĨ¤
- severity āĻšāϝāĻŧ
error(āĻāĻŋāĻā§āĻ āϤā§āϰāĻŋ āĻšāϝāĻŧ āύāĻž),warning(āϤāĻŦā§āĻ āϤā§āϰāĻŋ āĻšāϝāĻŧ) āĻŦāĻžfatal error(āĻāĻāĻžāύā§āĻ āĻĨā§āĻŽā§ āĻā§āĻā§)āĨ¤ - āϤāĻžāϰ āĻĒāϰā§āϰ āϞā§āĻāĻžāĻāĻž āϤā§āĻŽāĻžāϰ āĻāĻĻā§āĻĻā§āĻļā§āϝ āύāĻŋāϝāĻŧā§ compiler-āϰ āϏāĻŦāĻā§āϝāĻŧā§ āĻāĻžāϞ⧠āĻ āύā§āĻŽāĻžāύāĨ¤ āĻāĻāĻžāĻā§ āĻ āύā§āĻŽāĻžāύ āĻšāĻŋāϏā§āĻŦā§āĻ āĻĒāĻĄāĻŧā§āĨ¤
āϏāĻŦāĻā§āϝāĻŧā§ āĻā§āĻ semantic error āϝā§āĻāĻž āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāĻāĻāĻž operator, āĻāĻāĻāĻž āĻā§āϞ āĻāϤā§āϤāϰ, āĻā§āύ⧠āύāĻžāϞāĻŋāĻļ āύā§āĻāĨ¤
#include <stdio.h>
int main(void)
{
int length = 5;
int width = 3;
printf("Area = %d\n", length + width);
return 0;
}
Area = 8
āĻāĻžāϞāĻŋāϝāĻŧā§ āϏāĻāĻā§āϝāĻžāĻā§āϞ⧠āĻŦāĻĻāϞāĻžāĻāĨ¤ āϝā§āĻāĻĢāϞ āĻāϰ āĻā§āĻŖāĻĢāϞ āĻāĻžāĻāϤāĻžāϞā§āϝāĻŧāĻāĻžāĻŦā§ āĻŽāĻŋāϞ⧠āϝāĻžāϝāĻŧ āĻāĻŽāύ āĻā§āĻĄāĻŧāĻž āĻāĻžāĻĄāĻŧāĻž āĻĒā§āϰāϤāĻŋāĻāĻž āĻā§āĻĄāĻŧāĻžāϰ āĻāύā§āϝāĻ āĻāĻāĻž āĻā§āϞāĨ¤
Compiler-āĻ āĻāĻžāϞāĻžāĻāĻāĻāĻāĻž character āĻŦāĻĻāϞāĻžāϝāĻŧāĨ¤ āĻā§āϝāĻŧāĻžāϞ āĻāϰā§, comment āĻāĻāύ āĻŦāϞ⧠āĻĻāĻŋāĻā§āĻā§ āϞāĻžāĻāύāĻāĻž āĻā§ āĻāĻžāĻā§, āϤāĻžāĻ āĻĒāϰā§āϰ āĻĒāĻžāĻ āĻ āĻā§āϝāĻžāĻŽāĻŋāϤāĻŋ āύāĻž āĻā§āύā§āĻ āĻŽāĻžāύā§āĻāĻž āϝāĻžāĻāĻžāĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤
#include <stdio.h>
int main(void)
{
int length = 5;
int width = 3;
/* Area of a rectangle is length times width, in square metres. */
printf("Area = %d\n", length * width);
return 0;
}
Area = 15
Semantic bug āϏāĻžāϰāĻžāύ⧠āĻšāϝāĻŧ āĻā§āĻŦā§, message āĻĒāĻĄāĻŧā§ āύāĻžāĨ¤ āϏā§āĻāύā§āϝāĻ āĻāĻžāĻāĻā§ program-āϰ āĻšāĻŋāϏāĻžāĻŦ āĻŽāĻŋāϞāĻŋāϝāĻŧā§ āĻĻā§āĻāĻž āĻāĻāĻāĻž āϏāϤā§āϝāĻŋāĻāĻžāϰā§āϰ āĻĻāĻā§āώāϤāĻž, beginner-āϰ āĻ ā§āĻāύāĻž āύāĻžāĨ¤
Compiler-āĻ āĻāĻžāϞāĻžāĻāĻāĻ program āĻāĻāĻāĻž assignment-āϰ āĻŽāĻžāύ āĻāϰ āĻāĻāĻāĻž comparison-āϰ āĻŽāĻžāύ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āĻāĻžāĻĒā§āĨ¤ āĻĻā§āĻāĻāĻž āĻāϞāĻžāĻĻāĻž āĻāĻŋāύāĻŋāϏ, āϏā§āĻāĻž āĻĻā§āĻāĻžāϰ āĻāĻāĻžāĻ āϏāĻŦāĻā§āϝāĻŧā§ āĻĒāϰāĻŋāώā§āĻāĻžāϰ āĻāĻĒāĻžāϝāĻŧāĨ¤
#include <stdio.h>
int main(void)
{
int marks = 90;
printf("marks is %d\n", marks);
printf("marks == 90 gives %d\n", marks == 90);
printf("marks = 60 gives %d\n", marks = 60);
printf("marks is now %d\n", marks);
return 0;
}
marks is 90
marks == 90 gives 1
marks = 60 gives 60
marks is now 60
Comparison āϏāϤā§āϝāĻŋāϰ āĻāύā§āϝ 1 āĻāϰ āĻŽāĻŋāĻĨā§āϝāĻžāϰ āĻāύā§āϝ 0 āĻĻā§āϝāĻŧāĨ¤ Assignment āϝ⧠āĻŽāĻžāύ āĻŦāϏāĻžāϞ āϏā§āĻāĻžāĻ āĻĻā§āϝāĻŧ, āĻāϰ āϝāĻžāĻāϝāĻŧāĻžāϰ āĻĒāĻĨā§ variable-āĻāĻž āĻŦāĻĻāϞ⧠āĻĻā§āϝāĻŧāĨ¤ āϤāĻŋāύ āύāĻŽā§āĻŦāϰ āϞāĻžāĻāύ āĻĻā§āĻāĻāĻžāĻ āĻāϰā§āĻā§, āĻāϰ āĻĢāĻžāĻāĻĻāĻāĻž āĻ āĻŋāĻ āϏā§āĻāύā§āϝāĻ āĻāĻžāĻ āĻāϰā§āĨ¤
Compiler-āĻ āĻāĻžāϞāĻžāĻZara āĻĻā§āĻ āĻŦāĻŋāώāϝāĻŧā§āϰ āύāĻŽā§āĻŦāϰ āϝā§āĻ āĻāϰ⧠āĻāĻĄāĻŧ āĻāĻžāĻĒāĻā§āĨ¤ āĻĒā§āϰāϤāĻŋāĻāĻž āϞāĻžāĻāύ āĻŦā§āϧ, āĻĒā§āϰāϤāĻŋāĻāĻž āύāĻžāĻŽ āϏā§, āĻāϰ āĻāϤā§āϤāϰāĻāĻž āϤāĻŦā§āĻ āĻā§āϞāĨ¤
#include <stdio.h>
int main(void)
{
int physics = 75;
int chemistry = 80;
int total = physics + chemistry;
int average = total / 2;
printf("Total: %d\n", total);
printf("Average: %d\n", average);
return 0;
}
Total: 155
Average: 77
75 āĻāϰ 80-āϰ āĻāĻĄāĻŧ 77.5āĨ¤ C-āϤ⧠āĻāĻāĻāĻž āĻĒā§āϰā§āĻŖāϏāĻāĻā§āϝāĻžāĻā§ āĻāϰā§āĻāĻāĻž āĻĻāĻŋāϝāĻŧā§ āĻāĻžāĻ āĻāϰāϞ⧠āĻĻāĻļāĻŽāĻŋāĻā§āϰ āĻĒāϰā§āϰ āϏāĻŦāĻāĻž āĻĢā§āϞ⧠āĻĻā§āĻāϝāĻŧāĻž āĻšāϝāĻŧāĨ¤ āĻā§āύ⧠warning āĻāϏ⧠āύāĻž, āĻāĻžāϰāĻŖ āĻŦā§āϝāĻžāĻāϰāĻŖā§ āĻāĻŋāĻā§āĻ āĻā§āϞ āύā§āĻāĨ¤ āϏāĻžāϰāĻžāύā§āϰ āĻāĻĒāĻžāϝāĻŧāĻāĻž āĻĻā§āϝāĻŧ Module 4āĨ¤
Compiler-āĻ āĻāĻžāϞāĻžāĻāĻāĻāĻž āĻā§āĻĨāĻžāϝāĻŧ āĻāĻžāĻā§ āϞāĻžāĻāĻā§
- Apple, 2014. Apple-āϰ TLS code-āϰ
goto failbug āĻāĻŋāϞ āύāĻŋāĻā§āĻāϤ syntax-āϰ āĻāĻāĻāĻž āĻĻā§āĻāĻŦāĻžāϰ āϞā§āĻāĻž āϞāĻžāĻāύāĨ¤ āĻāĻāĻž āĻāĻ āϝāĻžāĻāĻžāĻāĻāĻž āĻāĻĄāĻŧāĻŋāϝāĻŧā§ āϝā§āϤ, āϝ⧠certificate-āĻāĻž āϏāϤā§āϝāĻŋāĻ āĻāĻ site-āϰ āĻāĻŋ āύāĻžāĨ¤ - Debian OpenSSL, 2008. Memory checker-āϰ āĻāĻāĻāĻž warning āĻĨāĻžāĻŽāĻžāϤ⧠āĻĻā§āĻāĻāĻž āϞāĻžāĻāύ āĻŽā§āĻā§ āĻĻā§āĻāϝāĻŧāĻž āĻšāϝāĻŧāĨ¤ Build āĻĒāϰāĻŋāώā§āĻāĻžāϰāĻ āĻĨāĻžāĻā§, āĻāϰ random āϏāĻāĻā§āϝāĻž āϤā§āϰāĻŋāϰ āĻ āĻāĻļāĻāĻž āĻĻā§āĻ āĻŦāĻāϰ āϧāϰ⧠āĻāĻā§āĻ āĻāύā§āĻĻāĻžāĻ āĻāϰāĻž āϝā§āϤāĨ¤
- āĻĒā§āϰāϤāĻŋāĻāĻž CI pipeline. "Build failed" āĻĻā§āĻā§ āĻāĻāĻā§ āϝāĻžāĻāϝāĻŧāĻž āĻāĻāĻāĻž merge āĻŽāĻžāύ⧠āĻāĻ lesson-āĻāĻž āĻāĻžāĻā§ āĻāϞāĻā§: āĻŽāĻžāύā§āώāĻā§ āĻā§āĻāĻāϤ⧠āĻšāĻāϝāĻŧāĻžāϰ āĻāĻā§āĻ compiler āĻāĻāĻāĻž syntax error āĻĢāĻŋāϰāĻŋāϝāĻŧā§ āĻĻāĻŋāĻā§āĻā§āĨ¤
- Static analysis.
clang-tidyāĻāϰ Coverity-āϰ āĻŽāϤ⧠tool āĻāĻā§āĻ semantics āύāĻŋāϝāĻŧā§ āĻ āύā§āĻŽāĻžāύ āĻāϰāĻžāϰ āĻāύā§āϝ, āĻāϰ āĻŦāĻĄāĻŧ project āĻĒā§āϰāϤāĻŋāĻāĻž āĻŦāĻĻāϞā§āϰ āĻāĻĒāϰ āϏā§āĻā§āϞ⧠āĻāĻžāϞāĻžāϝāĻŧāĨ¤ āĻāϰāĻž āĻĢāĻžāĻāĻāĻāĻžāϰ āĻāĻŋāĻā§ āĻ āĻāĻļ āϧāϰā§, āĻĒā§āϰā§āĻāĻž āĻāĻāύ⧠āύāĻžāĨ¤
āϝ⧠āĻā§āϞāĻā§āϞ⧠āϏāĻŦāĻžāĻ āĻāϰā§
ā§§. Message āϝ⧠āϞāĻžāĻāύā§āϰ āύāĻžāĻŽ āĻŦāϞāĻā§ āϏā§āĻāĻžāĻ āϏāĻžāϰāĻžāύā§āĨ¤
int marks = 90
printf("%d\n", marks);
GCC āĻŦāϞ⧠error: expected ';' before 'printf', āĻāϰ āĻāĻā§āϞ āϤā§āϞ⧠2 āύāĻŽā§āĻŦāϰ āϞāĻžāĻāύā§āĨ¤ 2 āύāĻŽā§āĻŦāϰ āϞāĻžāĻāύ āĻ āĻŋāĻāĻ āĻāĻā§āĨ¤ 1 āύāĻŽā§āĻŦāϰ āϞāĻžāĻāύā§āϰ declaration-āĻāĻž āĻļā§āώāĻ āĻšāϝāĻŧāύāĻŋ, āĻāϰ compiler āĻā§āϰ āĻĒā§āϝāĻŧā§āĻā§ āϤāĻāύ, āϝāĻāύ āĻāĻŽāύ āĻāĻāĻāĻž āĻļāĻŦā§āĻĻ āĻāϏā§āĻā§ āϝā§āĻāĻž āĻāĻāĻž āĻāϰ āĻāĻžāϞāĻŋāϝāĻŧā§ āύāĻŋāϤ⧠āĻĒāĻžāϰ⧠āύāĻžāĨ¤
⧍. Compiler āĻā§āĻĒ āĻŽāĻžāύā§āĻ program āĻ āĻŋāĻ, āĻāĻāĻž āϧāϰ⧠āύā§āĻāϝāĻŧāĻžāĨ¤
int average = total / count; /* count might be 0 */
āĻā§āύ⧠warning-āϰ āϏā§āϤāϰā§āĻ āĻā§āύ⧠message āύā§āĻāĨ¤ āĻļā§āύā§āϝ āĻĻāĻŋāϝāĻŧā§ āĻāĻžāĻ āĻŦā§āϝāĻžāĻāϰāĻŖā§āϰ āĻā§āϞ āύāĻž, āϤāĻžāĻ compiler āĻāĻāĻž āĻĒāĻžāĻļ āĻāϰāĻŋāϝāĻŧā§ āĻĻā§āϝāĻŧāĨ¤ count 0 āĻšāϞ⧠program āĻāϞāĻžāϰ āϏāĻŽāϝāĻŧ āĻŽāϰ⧠āϝāĻžāϝāĻŧ, āĻāϰ āύāĻŋāĻā§āϰ āĻŽāĻžāĻĨāĻž āĻāĻžāĻāĻžāύā§āϰ āĻĒā§āϰāĻļā§āύāĻāĻž āĻāĻāĻžāĻāĨ¤
ā§Š. == āĻŦā§āĻāĻžāϤ⧠āĻā§āϝāĻŧā§ = āϞā§āĻāĻžāĨ¤
if (marks = 90) {
printf("Top of the class\n");
}
Playground āĻāĻŋāĻā§āĻ āĻŦāϞ⧠āύāĻž, āĻāĻžāϰāĻŖ āĻāϰ āĻĒāϰā§āĻā§āώāĻžāĻāĻž -Wall-āϰ āĻā§āϤāϰ⧠āĻĨāĻžāĻā§āĨ¤ āύāĻŋāĻā§āϰ āĻŽā§āĻļāĻŋāύ⧠gcc -Wall āĻĻāĻŋāϞ⧠āĻāϏ⧠warning: suggest parentheses around assignment used as truth valueāĨ¤ Program 90 āĻŦāϏāĻžāϝāĻŧ āĻāϰ āϞāĻžāĻāύāĻāĻž āϏāĻŦ āϏāĻŽāϝāĻŧ āĻāĻžāĻĒā§āĨ¤
ā§Ē. Comment-āϰ āĻā§āϤāϰ⧠comment āĻŦāϏāĻžāύā§āĨ¤
/* outer /* inner */ outer */
āϤā§āĻŽāĻŋ āĻĒāĻžāĻ error: unknown type name 'outer', āϝā§āĻāĻž āĻĻā§āĻā§ comment-āϰ āϏāĻā§āĻā§ āϏāĻŽā§āĻĒāϰā§āĻāĻšā§āύ āĻŽāύ⧠āĻšāϝāĻŧāĨ¤ āĻĒā§āϰāĻĨāĻŽ */ comment-āĻāĻž āĻļā§āώ āĻāϰā§āĻā§, āϤāĻžāĻ āϤāĻžāϰ āĻĒāϰā§āϰ āĻļāĻŦā§āĻĻāĻā§āϞ⧠code āĻšāϝāĻŧā§ āĻā§āĻā§āĨ¤ āĻāĻā§āĻ comment āĻāĻā§ āĻāĻŽāύ āĻāĻāĻāĻž āĻ
āĻāĻļ āĻŦāĻžāĻĻ āĻĻāĻŋāϤ⧠āĻāĻžāĻāϞ⧠āĻĒā§āϰāϤāĻŋāĻāĻž āϞāĻžāĻāύ⧠// āĻĻāĻžāĻāĨ¤
Bob-āϰ āĻĻā§āĻŦāĻŋāĻā§āĻŖ āĻāϰāĻžāϰ program-āĻ āϤāĻŋāύāĻāĻž syntax error āĻāĻā§, āĻāϰ āĻāϰ āĻāĻŋāĻā§āĻ āĻā§āϞ āύā§āĻāĨ¤ Compile āĻšāĻāϝāĻŧāĻž āĻĒāϰā§āϝāύā§āϤ āϏāĻžāϰāĻžāĻ, āϤāĻžāϰāĻĒāϰ āĻĻā§āĻā§ āĻāϤā§āϤāϰāĻāĻž āĻ āĻŋāĻ āĻāϏāĻā§ āĻāĻŋ āύāĻžāĨ¤
Input. āĻāĻ āϞāĻžāĻāύ⧠āĻāĻāĻāĻž integer nāĨ¤
Output. āĻāĻ āϞāĻžāĻāύ: Double of n is 2n, āĻĻā§āĻāĻāĻž āϏāĻāĻā§āϝāĻž āĻŦāϏāĻžāύ⧠āĻ
āĻŦāϏā§āĻĨāĻžāϝāĻŧāĨ¤
Constraints. 0 <= n <= 1000āĨ¤
Sample. Input 21 āĻĻāĻŋāϞ⧠āĻāϏ⧠Double of 21 is 42āĨ¤
#include <stdio.h>
int main(void)
{
int n
scanf("%d", &n);
Printf("Double of %d is %d\n", n, n * 2);
return 0;
āύāĻŋāϝāĻŧāĻŽāĨ¤ Compiler āϝā§āĻā§āϞ⧠āύāĻŋāϝāĻŧā§ āύāĻžāϞāĻŋāĻļ āĻāϰā§, āĻļā§āϧ⧠āϏā§āĻā§āϞā§āĻ āϏāĻžāϰāĻžāĻāĨ¤ āĻĒā§āϰāĻĨāĻŽ message āĻĒāĻĄāĻŧā§, āĻāĻāĻāĻž āĻāĻŋāύāĻŋāϏ āϏāĻžāϰāĻžāĻ, āĻāĻŦāĻžāϰ build āĻāϰā§, āĻāϰ āĻā§āύ⧠āϤā§āĻŽāĻžāϰ āĻāϝāĻŧāĻāĻž build āϞāĻžāĻāϞāĨ¤
Hidden test āϏāĻš grading āĻšāϝāĻŧ āĻāĻ module-āϰ Problems lesson-āĻ, fix-the-syntax āύāĻžāĻŽā§āĨ¤
āĻāĻāĻž āĻĒā§āϰāĻĨāĻŽ āĻā§āώā§āĻāĻžāϤā§āĻ compile āĻšāϝāĻŧ, āĻāϰ āϤāĻŦā§āĻ āĻā§āϞāĨ¤ Maria āĻāĻžāϝāĻŧ āĻāĻāĻāĻž āĻŦāϰā§āĻāĻžāĻāĻžāϰ tile-āϰ āĻā§āώā§āϤā§āϰāĻĢāϞ, āĻāϰ program āĻāĻžāĻĒāĻā§ āĻāĻāĻžāϰ āĻāĻžāϰāĻĒāĻžāĻļā§āϰ āĻĻā§āϰāϤā§āĻŦāĨ¤
Input. āĻāĻ āϞāĻžāĻāύ⧠āĻāĻāĻāĻž integer s, āĻŦāϰā§āĻā§āϰ āĻŦāĻžāĻšā§ āϏā§āύā§āĻāĻŋāĻŽāĻŋāĻāĻžāϰā§āĨ¤
Output. āĻāĻ āϞāĻžāĻāύ: Area is X, āϝā§āĻāĻžāύ⧠X āĻšāϞ⧠āĻā§āώā§āϤā§āϰāĻĢāϞ āĻŦāϰā§āĻ āϏā§āύā§āĻāĻŋāĻŽāĻŋāĻāĻžāϰā§āĨ¤
Constraints. 1 <= s <= 100āĨ¤
Sample. Input 4 āĻĻāĻŋāϞ⧠āĻāϏ⧠Area is 16āĨ¤ Starter-āĻāĻžāĻ 16 āĻāĻžāĻĒā§, āĻāϰ āĻāĻāĻžāĻ āĻĢāĻžāĻāĻĻ: 4-āĻ āĻāĻāĻŽāĻžāϤā§āϰ āĻŦāĻžāĻšā§ āϝā§āĻāĻžāύ⧠āĻĒāϰāĻŋāϏā§āĻŽāĻž āĻāϰ āĻā§āώā§āϤā§āϰāĻĢāϞ āĻŽāĻŋāϞ⧠āϝāĻžāϝāĻŧāĨ¤
#include <stdio.h>
int main(void)
{
int s;
scanf("%d", &s);
printf("Area is %d\n", 4 * s);
return 0;
}
āύāĻŋāĻā§ āϝāĻžāĻāĻžāĻ āĻāϰā§āĨ¤ āϏāĻžāϰāĻžāύā§āϰ āĻāĻā§ āĻāϰ āĻĒāϰ⧠s āϏāĻŽāĻžāύ 5 āĻĻāĻŋāϝāĻŧā§ āĻĻā§āĻā§āĨ¤ āĻā§āϞ āĻāĻžāϰāĻŖā§ āĻĒāĻžāϏ āĻāϰ⧠āϝāĻžāĻāϝāĻŧāĻž āĻāĻāĻāĻž test case-āĻ semantic bug-āĻā§ āĻŦāĻžāĻāĻāĻŋāϝāĻŧā§ āϰāĻžāĻā§āĨ¤
Grading āĻšāϝāĻŧ square-area āύāĻžāĻŽā§āĨ¤
āĻāĻāĻžāύ⧠āĻāĻāĻāĻž character āĻā§āϞ, āĻāϰ āϏā§āĻāĻž āĻāĻ lesson-āϰāĻāĨ¤ Program-āĻāĻžāϰ āĻāϤā§āϤāϰ āĻĻā§āĻāϝāĻŧāĻžāϰ āĻāĻĨāĻž āĻāĻ āĻĒā§āϰāĻļā§āύā§āϰ: "āĻāĻ āĻĻā§āĻāĻāĻž āύāĻŽā§āĻŦāϰ āϏāĻŽāĻžāύ āĻāĻŋ āύāĻž", āĻšā§āϝāĻžāĻ āĻšāϞ⧠1 āĻāϰ āύāĻž āĻšāϞ⧠0 āĻā§āĻĒā§āĨ¤
Input. āĻāĻ āϞāĻžāĻāύ⧠āĻĻā§āĻāĻāĻž integer a bāĨ¤
Output. āĻāĻ āϞāĻžāĻāύ: āϏāĻŽāĻžāύ āĻšāϞ⧠1, āύāĻāϞ⧠0āĨ¤
Constraints. 0 <= a, b <= 100āĨ¤
Sample. Input 90 90 āĻĻāĻŋāϞ⧠āĻāϏ⧠1āĨ¤ Input 90 60 āĻĻāĻŋāϞ⧠starter āĻĻā§āϝāĻŧ 60, āϝā§āĻāĻž āĻ
āύā§āĻŽā§āĻĻāĻŋāϤ āĻĻā§āĻāĻāĻž āĻāϤā§āϤāϰā§āϰ āĻāĻāĻāĻžāĻ āύāĻžāĨ¤
#include <stdio.h>
int main(void)
{
int a, b;
scanf("%d %d", &a, &b);
printf("%d\n", a = b);
return 0;
}
āύāĻŋāĻā§ āϝāĻžāĻāĻžāĻ āĻāϰā§āĨ¤ āϏāĻžāϰāĻžāύā§āϰ āĻĒāϰ input 0 0 āĻĻāĻŋāϞ⧠āĻ
āĻŦāĻļā§āϝāĻ 1 āĻāϏāϤ⧠āĻšāĻŦā§āĨ¤ āϏāĻžāϰāĻžāύā§āϰ āĻāĻā§ āĻāĻāĻž 0 āĻāĻžāĻĒā§, āϝā§āĻāĻž āĻĻā§āĻāϤ⧠āĻ āĻŋāĻ āϞāĻžāĻā§ āĻāϰ āĻāϏāϞ⧠āĻāĻžāĻāϤāĻžāϞā§āϝāĻŧāĨ¤
āϝ⧠āĻĒā§āϰāĻļā§āύāĻā§āϞ⧠āϏāĻŦāĻžāϰ āĻŽāύ⧠āĻāϏā§
Compile āĻšāϞ⧠āĻāĻŽāĻžāϰ program āĻ āĻŋāĻ āĻāĻā§?
āύāĻžāĨ¤ āĻŽāĻžāύ⧠āĻŦā§āϝāĻžāĻāϰāĻŖāĻāĻž āĻŦā§āϧāĨ¤ āĻāĻ lesson-āϰ Example 1 āĻĒāϰāĻŋāώā§āĻāĻžāϰāĻāĻžāĻŦā§ compile āĻšāϝāĻŧ āĻāϰ āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰ āĻā§āϞ āĻāϤā§āϤāϰ āĻĻā§āϝāĻŧāĨ¤ āĻŽāĻžāύ⧠āύāĻŋāϝāĻŧā§ āϤā§āĻŽāĻžāĻā§ āĻļā§āϧ⧠āϤā§āĻŽāĻžāϰ āύāĻŋāĻā§āϰ test input-āĻ āĻŦāϞāϤ⧠āĻĒāĻžāϰā§āĨ¤
Compiler āĻāĻāύ⧠semantic error āϧāϰāϤ⧠āĻĒāĻžāϰā§?
āĻŽāĻžāĻā§āĻŽāϧā§āϝā§, type-āϰ āϏā§āĻŦāĻžāĻĻā§:
-Wallāϧāϰ⧠āĻĢā§āϞā§%d-āĻā§ āĻāĻāĻāĻž string āĻĻā§āĻāϝāĻŧāĻž āĻšāϝāĻŧā§āĻā§, āĻāϰ sanitizer āĻāϞāĻžāϰ āϏāĻŽāϝāĻŧ āĻāĻžāϰāĻžāĻĒ memory āĻā§āĻāϝāĻŧāĻž āϧāϰā§āĨ¤ āĻāĻĻā§āϰ āĻā§āĻāĻ āĻāĻžāύ⧠āύāĻž āϤā§āĻŽāĻžāϰ program āĻā§ āĻāĻžāĻā§āϰ āĻāύā§āϝāĨ¤āĻāĻāĻāĻž āĻā§āϞ āĻĨā§āĻā§ āĻŦāĻŋāĻļāĻāĻž error āĻāϏ⧠āĻā§āύ?
āĻāĻžāϰāĻŖ āĻĒā§āϰāĻĨāĻŽ āĻā§āϞāĻŽāĻžāϞā§āϰ āĻĒāϰ compiler āϤā§āĻŽāĻžāϰ program āĻā§āϞāĻāĻžāĻŦā§ āĻĒāĻĄāĻŧāĻā§ āĻāϰ āϝāĻž āĻĒāĻžāĻā§āĻā§ āĻŦāϞ⧠āϝāĻžāĻā§āĻā§āĨ¤ āĻĒā§āϰāĻĨāĻŽāĻāĻž āϏāĻžāϰāĻŋāϝāĻŧā§ āĻāĻŦāĻžāϰ build āĻāϰā§āĨ¤ āĻŦāĻžāĻāĻŋāĻā§āϞā§āϰ āĻŦā§āĻļāĻŋāϰāĻāĻžāĻ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻāϧāĻžāĻ āĻšāϝāĻŧā§ āϝāĻžāϝāĻŧāĨ¤
Warning āĻāĻŋ āĻā§āĻĄāĻŧā§ āĻĻā§āĻāϝāĻŧāĻžāϰ āĻŽāϤ⧠āĻāĻŋāύāĻŋāϏ?
āĻāĻāĻžāĻā§ āĻāĻŽāύ āĻāĻāĻāĻž error āĻāĻžāĻŦā§ āϝā§āĻāĻž āĻāĻāύ⧠āϤā§āĻŽāĻžāĻā§ āĻāĻžāĻŽāĻĄāĻŧāĻžāϝāĻŧāύāĻŋāĨ¤ āĻāĻĒāϰā§āϰ table-āϰ āĻĒā§āϰāϤāĻŋāĻāĻž warning āϏāϤā§āϝāĻŋāĻāĻžāϰā§āϰ āĻāĻžāĻāĻž code āĻŦāϰā§āĻŖāύāĻž āĻāϰā§, āĻāϰ āĻĒā§āĻļāĻžāĻĻāĻžāϰ project warning-āĻā§ error āĻŦāĻžāύāĻŋāϝāĻŧā§ build āĻāϰā§āĨ¤
āĻāĻ message-āĻā§āϞ⧠āĻŽā§āĻāϏā§āĻĨ āĻāϰāϤ⧠āĻšāĻŦā§?
āύāĻžāĨ¤ Code āϞā§āĻāĻž āĻļā§āϰā§āϰ āĻāĻ āϏāĻĒā§āϤāĻžāĻšā§āϰ āĻŽāϧā§āϝā§āĻ āĻĒā§āϰāĻĨāĻŽ āĻĒāĻžāĻāĻāĻāĻž āϤā§āĻŽāĻŋ āĻāĻŋāύ⧠āĻĢā§āϞāĻŦā§āĨ¤ āĻāĻžāĻ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻāĻ table āĻā§āϞāĻž āϰāĻžāĻā§, āĻāϰ āĻā§āĻāĻāĻžāϰ āϏāĻŽāϝāĻŧ āĻšā§āĻŦāĻšā§ āĻļāĻŦā§āĻĻāĻā§āϞ⧠āĻā§āĻā§ āĻĻāĻžāĻāĨ¤
āĻŽā§āϞ āĻāĻĨāĻž
- Syntax āĻšāϞ⧠āĻŦā§āϝāĻžāĻāϰāĻŖ, compiler āϝā§āĻāĻž āĻĻā§āĻā§; semantics āĻšāϞ⧠āĻ āϰā§āĻĨ, āϝā§āĻāĻž āĻā§āĻŦāϞ āϤā§āĻŽāĻŋ āĻĻā§āĻāϤ⧠āĻĒāĻžāϰā§āĨ¤
- Syntax error āϏāϏā§āϤāĻž: āĻāĻ āϏā§āĻā§āύā§āĻĄ, āĻāĻāĻāĻž message, āĻāĻāĻāĻž āϏāĻžāϰāĻžāĻāĨ¤
- āĻĒāϰāĻŋāώā§āĻāĻžāϰ build āĻāϤā§āϤāϰ āĻ āĻŋāĻ āĻāĻŋ āύāĻž, āϏ⧠āύāĻŋāϝāĻŧā§ āĻāĻŋāĻā§āĻ āĻŦāϞ⧠āύāĻžāĨ¤
=āĻŽāĻžāύ āĻŦāϏāĻžāϝāĻŧ āĻāϰ āϤāĻžāϰ āύāĻŋāĻā§āϰ āĻāĻāĻāĻž āĻŽāĻžāύ āĻāĻā§;==āĻŽā§āϞāĻžāϝāĻŧ āĻāϰ 1 āĻŦāĻž 0 āĻĻā§āϝāĻŧāĨ¤- āĻĒā§āϰāĻĨāĻŽ message āĻĒāĻĄāĻŧā§, āϤāĻžāϰ āĻāĻ āϞāĻžāĻāύ āĻāĻĒāϰ⧠āϤāĻžāĻāĻžāĻ, āĻāϰ āĻšā§āĻŦāĻšā§ āĻļāĻŦā§āĻĻāĻā§āϞ⧠āĻā§āĻā§ āύāĻžāĻāĨ¤
- āĻŦāĻŋāĻā§āϝāĻžāϤ bug-āĻā§āϞ⧠(goto fail, Debian OpenSSL) āϏāĻŦāĻ āĻĒā§āϰā§āĻĒā§āϰāĻŋ āĻŦā§āϧ C āĻāĻŋāϞāĨ¤
āĻĒāϰā§āϰ lesson-āĻ C-āϰ āĻĒā§āϰāϤāĻŋāĻāĻž āĻāĻŋāĻšā§āύā§āϰ āύāĻžāĻŽ āĻļāĻŋāĻāĻŦā§, āϝāĻžāϤ⧠āĻāĻ table-āϰ message-āĻā§āϞ⧠āĻāĻŽāύ āĻŦāĻžāĻā§āϝ āĻšāϝāĻŧā§ āϝāĻžāϝāĻŧ āϝā§āĻā§āϞ⧠āϤā§āĻŽāĻŋ āĻŽā§āĻā§ āĻĒāĻĄāĻŧāϤ⧠āĻĒāĻžāϰā§āĨ¤
lesson ⧍ āĻļā§āώ
āĻļā§āώ āĻšāϞ⧠āĻāĻŋāĻšā§āύ āĻĻāĻŋāύ, āĻ āĻā§āϰāĻāϤāĻŋ āĻāĻĒāύāĻžāϰ āϏāĻžāĻĨā§ āĻĨāĻžāĻāĻŦā§āĨ¤
āĻĒāϰā§āϰāĻāĻž: āĻāĻŋāĻšā§āύā§āϰ āĻ āĻāĻŋāϧāĻžāύ: C-āϰ āĻĒā§āϰāϤāĻŋāĻāĻž āϏāĻžāĻāύ āĻā§ āĻŦāϞā§