- 1 1. ã¯ããã«
- 2 2. 倿°ãšã¯ïŒ
- 3 3. Cèšèªã®ããŒã¿åã®æŠèŠ
- 4 4. åºæ¬ããŒã¿åïŒããªããã£ãåïŒ
- 5 5. 掟çããŒã¿åïŒDerived Data TypesïŒ
- 6 6. å修食åïŒType ModifiersïŒ
- 7 7. å倿ïŒãã£ã¹ãïŒ
- 8 8. 倿°ã®ã¹ã³ãŒããšå¯¿åœ
- 9 9. å®è·µçãªããŒã¿åã®éžã³æ¹
- 9.1 ããŒã¿åã®éžæãéèŠãªçç±
- 9.2 1. ã¡ã¢ãªãç¯çŽãããå Žå
- 9.3 2. 粟床ãå¿ èŠãªå Žå
- 9.4 3. è² ã®å€ãæ±ããªãå Žå
- 9.5 4. ã«ãŒãã«ãŠã³ã¿ã«é©ããããŒã¿å
- 9.6 5. æåãæ±ãå Žå
- 9.7 6. åæåã§ã³ãŒããåããããã
- 9.8 7. ãã€ã³ã¿ã䜿ã£ãŠã¡ã¢ãªãæè»ã«ç®¡ç
- 9.9 8. æé©ãªããŒã¿åã®éžã³æ¹ïŒãŸãšãïŒ
- 10 10. ãŸãšã
- 10.1 Cèšèªã«ããã倿°ãšããŒã¿åã®éèŠæ§
- 10.2 1. 倿°ãšã¯ïŒ
- 10.3 2. Cèšèªã®ããŒã¿åã®æŠèŠ
- 10.4 3. åºæ¬ããŒã¿åïŒããªããã£ãåïŒ
- 10.5 4. 掟çããŒã¿åïŒé åã»æ§é äœã»å ±çšäœã»åæåã»ãã€ã³ã¿ïŒ
- 10.6 5. å修食å
- 10.7 6. å倿ïŒãã£ã¹ãïŒ
- 10.8 7. 倿°ã®ã¹ã³ãŒããšå¯¿åœ
- 10.9 8. å®è·µçãªããŒã¿åã®éžã³æ¹
- 10.10 9. FAQïŒãããã質åïŒ
- 10.11 ãŸãšã
1. ã¯ããã«
Cèšèªã«ããã倿°ãšããŒã¿åã®éèŠæ§
Cèšèªã¯ãã·ã¹ãã ããã°ã©ãã³ã°ãçµã¿èŸŒã¿ã·ã¹ãã ã®éçºã§åºã䜿ãããŠããããã°ã©ãã³ã°èšèªã§ãããã®CèšèªãåŠã¶äžã§ãã倿°ããšãããŒã¿åã ã¯æãåºæ¬çã§ãããªããéèŠãªæŠå¿µã§ããããã°ã©ã ã¯ããŒã¿ãæäœããããšã§æãç«ã£ãŠããããã®ããŒã¿ãé©åã«ç®¡çããããã«ã¯ã倿°ãæ£ãã䜿ããé©åãªããŒã¿åãéžæãã ããšãå¿ èŠã§ãã
ããšãã°ãæ°å€ãæ ŒçŽããããã®å€æ°ãèãããšããæŽæ°ãæ±ãå Žåãšå°æ°ãæ±ãå Žåã§ã¯ã䜿çšããããŒã¿åãç°ãªããŸãããŸããã¡ã¢ãªã®ç¯çŽãåŠçé床ã®åäžãèæ ®ããŠãæé©ãªããŒã¿åãéžæããããšãéèŠã§ãã
ãã®èšäºã®ç®ç
ãã®èšäºã§ã¯ãCèšèªã®ã倿°ããšãããŒã¿åãã«ã€ããŠãåå¿è ã«ãåããããã解説ããŸããåºæ¬æŠå¿µããå®è·µçãªäœ¿ãæ¹ãŸã§ãäœç³»çã«åŠã¹ãããã«ã以äžã®ãã€ã³ãã«æ²¿ã£ãŠèª¬æããŸãã
- 倿°ãšã¯äœãïŒ ïŒ å®£èšãåæåã®æ¹æ³ãåœåèŠåãªã©ã解説
- ããŒã¿åã®åé¡ ïŒ åºæ¬ããŒã¿åïŒint, float, char ãªã©ïŒãšæŽŸçããŒã¿åïŒæ§é äœ, é å, ãã€ã³ã¿ ãªã©ïŒ
- å倿ïŒãã£ã¹ãïŒ ïŒ æé»ã®åå€æãšæç€ºçãªå倿
- 倿°ã®ã¹ã³ãŒããšå¯¿åœ ïŒ ããŒã«ã«å€æ°ãšã°ããŒãã«å€æ°ã®éã
- å®è·µçãªããŒã¿åã®éžã³æ¹ ïŒ ã¡ã¢ãªäœ¿çšéãèšç®ç²ŸåºŠãèæ ®ããæé©ãªéžæ
ã©ã®ãããªå Žé¢ã§å€æ°ãããŒã¿åãæèããå¿ èŠãããã®ãïŒ
Cèšèªã®ããã°ã©ãã³ã°ã§ã¯ã次ã®ãããªå Žé¢ã§å€æ°ãããŒã¿åã®éžæãéèŠã«ãªããŸãã
ã¡ã¢ãªã®æé©å
çµã¿èŸŒã¿ã·ã¹ãã ãäœã¬ãã«ã®ããã°ã©ã ã§ã¯ãã¡ã¢ãªã®äœ¿çšéãæå°éã«æããããšãæ±ããããŸãããã®ãããããŒã¿åãé©åã«éžã¶ããšã§ãç¡é§ãªã¡ã¢ãªæ¶è²»ãé²ãããšãã§ããŸãã
short num1 = 100; // 2ãã€ãïŒ16ãããïŒ
int num2 = 100; // 4ãã€ãïŒ32ãããïŒ
äžèšã®äŸã§ã¯ãshort
ã䜿ãããšã§ int
ãããã¡ã¢ãªãç¯çŽã§ããŸãã
èšç®ç²ŸåºŠã®åäž
æµ®åå°æ°ç¹æ°ãæ±ãå Žåãfloat
ããã double
ã®æ¹ã粟床ãé«ãã§ããããã®åã¡ã¢ãªãå€ãæ¶è²»ããŸãã
float pi = 3.141592; // å粟床浮åå°æ°ç¹ïŒ32ãããïŒ
double pi_high = 3.14159265358979; // å粟床浮åå°æ°ç¹ïŒ64ãããïŒ
ç²ŸåºŠãæ±ããããèšç®ã§ã¯ double
ã䜿çšããã®ãäžè¬çã§ãã
å倿ã«ãããã°ã®é²æ¢
Cèšèªã§ã¯ãç°ãªãããŒã¿åéã®æŒç®ãèªåçã«å倿ãããããšããããŸããé©åã«ãã£ã¹ããããªããšãæå³ããªãçµæã«ãªãããšããããŸãã
int a = 10;
float b = 3.5;
int result = a + b; // æé»ã®å倿ïŒçµæã¯intåã«äžžããããïŒ
ãã®å Žåãresult
ã®å€ã¯ 13
ã«ãªããå°æ°ç¹ä»¥äžã¯åãæšãŠãããŸãããããé²ãããã«ã¯ãæç€ºçãªå倿ïŒãã£ã¹ãïŒãå¿
èŠã§ãã
float result_correct = (float)a + b; // æ£ããå倿
ãŸãšã
Cèšèªã®ããã°ã©ãã³ã°ã§ã¯ã倿°ãšããŒã¿åã®éžæãéåžžã«éèŠ ã§ããã¡ã¢ãªå¹çãèšç®ç²ŸåºŠãå倿ã®åœ±é¿ãèæ ®ããŠãé©åãªããŒã¿åãéžæããããšã§ããã°ãé²ããå¹çã®è¯ãããã°ã©ã ãäœæãã ããšãã§ããŸãã
2. 倿°ãšã¯ïŒ
倿°ã®åºæ¬çãªæŠå¿µ
Cèšèªã«ãããŠã倿°ïŒVariableïŒ ã¯ããã°ã©ã ãããŒã¿ãäžæçã«ä¿åããããã®ãååã®ä»ããèšæ¶é åãã§ããããã°ã©ã å ã§èšç®ãè¡ã£ãããããŒã¿ãä¿åãããããéã«ã倿°ãé©åã«äœ¿çšããããšã§ãæè»ãªã³ãŒããæžãããšãã§ããŸãã
倿°ã®ç¹åŸŽ
- ããŒã¿ãä¿åããããã®èšæ¶é å
- ããã°ã©ã ã®å®è¡äžã«å€ã倿Žã§ãã
- ããŒã¿ã®çš®é¡ïŒåïŒã«å¿ããã¡ã¢ãªé åã確ä¿ãã
ããšãã°ãæŽæ°å€ãä¿åãã倿°ãæµ®åå°æ°ç¹æ°ãä¿åãã倿°ãæåãä¿åãã倿°ãªã©ããããŸãã
倿°ã®å®£èšãšåæå
Cèšèªã§å€æ°ã䜿ãã«ã¯ããŸã 倿°ã®å®£èš ãè¡ããŸãã倿°ã®å®£èšã§ã¯ãããŒã¿åïŒåïŒãšå€æ°å ãæå®ããå¿ èŠããããŸãã
倿°ã®åºæ¬çãªå®£è𿹿³
ããŒã¿å 倿°å;
倿°ã®åæå
倿°ã宣èšããã ãã§ã¯ãå€ã¯æªå®çŸ©ã®ãŸãŸã§ãããã®ãããåæåïŒåæå€ãèšå®ïŒ ããããšã§ãæå³ããªãåäœãé²ãããšãã§ããŸãã
int num = 10; // æŽæ°å倿° num ã 10 ã§åæå
float pi = 3.14; // æµ®åå°æ°ç¹å倿° pi ã 3.14 ã§åæå
char letter = 'A'; // æåå倿° letter ã 'A' ã§åæå
Cèšèªã®å€æ°ã®å
Cèšèªã§ã¯ã倿°ã®åãæç¢ºã«å®çŸ©ããå¿ èŠããããŸããäž»ãªããŒã¿åã¯ä»¥äžã®ããã«ãªããŸãã
ããŒã¿å | 説æ | 䜿çšäŸ |
---|---|---|
int | æŽæ°å | int a = 10; |
float | å粟床浮åå°æ°ç¹æ° | float b = 3.14; |
double | å粟床浮åå°æ°ç¹æ° | double c = 3.1415926535; |
char | æåå | char d = 'A'; |
æŽæ°åãšæµ®åå°æ°ç¹åã®éãã«ã€ããŠã¯ãåŸã®ãããŒã¿åã®æŠèŠãã»ã¯ã·ã§ã³ã§è©³ãã説æããŸãã
倿°åã®åœåèŠåãšãã¹ããã©ã¯ãã£ã¹
Cèšèªã®å€æ°åã®ã«ãŒã«
倿°åã¯èªç±ã«èšå®ã§ããŸããã以äžã®ã«ãŒã«ã«åŸãå¿ èŠããããŸãã
â 䜿çšå¯èœãªæå
- ã¢ã«ãã¡ãããïŒ
A-Z
ãa-z
ïŒ - æ°åïŒ
0-9
ïŒ â»ãã ãã倿°åã®å é ã«ã¯äœ¿çšã§ããªã - ã¢ã³ããŒã¹ã³ã¢ïŒ
_
ïŒ
ð« 䜿çšã§ããªããã®
- äºçŽèªïŒäŸïŒ
int
ãfloat
ãreturn
ãªã©ïŒ - ç¹æ®æåïŒäŸïŒ
@, #, $
ãªã©ïŒ - 倿°åã®å é ã«æ°å
int _value = 10; // OK
int number1 = 20; // OK
int 1st_number = 30; // NGïŒæ°åã§å§ãŸã倿°åã¯äžå¯ïŒ
int return = 100; // NGïŒäºçŽèªã¯äœ¿çšäžå¯ïŒ
å¯èªæ§ãèæ ®ããåœåïŒãã¹ããã©ã¯ãã£ã¹ïŒ
Cèšèªã§ã¯ã倿°åãé©åã«åœåããããšã§ãã³ãŒãã®å¯èªæ§ãåäžããŸãã
â è¯ãäŸ
int userAge; // ãŠãŒã¶ãŒã®å¹Žéœ¢
float circleArea; // åã®é¢ç©
char firstLetter; // æåã®æå
ð« æªãäŸ
int a; // æå³äžæ
float b1; // äœã®ããŒã¿ãããããªã
char x_y_z; // è€éããã
ð å¯èªæ§ãåäžããããã€ã³ã
- 倿°åã¯æå³ã®ããååã«ãã
- è€æ°ã®åèªã¯
camelCase
ïŒäŸïŒuserAgeïŒãsnake_case
ïŒäŸïŒuser_ageïŒã䜿ã - ç¥èªã¯ã§ããã ãé¿ããïŒäŸïŒnumOfStudents ã®ããã«å ·äœçã«ïŒ
倿°ã®äœ¿ãæ¹ïŒç°¡åãªããã°ã©ã ïŒ
次ã®ããã°ã©ã ã¯ã倿°ã䜿ã£ãŠç°¡åãªèšç®ãè¡ããçµæã衚瀺ãããã®ã§ãã
ãµã³ãã«ã³ãŒã
#include <stdio.h>
int main() {
int a = 5;
int b = 10;
int sum = a + b; // 倿°ã䜿ã£ãŠèšç®
printf("a = %d, b = %d, sum = %d\n", a, b, sum);
return 0;
}
å®è¡çµæ
a = 5, b = 10, sum = 15
ãã®ããã«ã倿°ã䜿ãããšã§ãèšç®çµæãæ ŒçŽããåå©çšããããšãã§ããŸãã
ãŸãšã
- 倿°ã¯ããŒã¿ãäžæçã«ä¿åããããã®èšæ¶é å
- Cèšèªã§ã¯ã倿°ã宣èšããéã«ããŒã¿åãæå®ããå¿ èŠããã
- 倿°ã®åœåã«ã¯ã«ãŒã«ããããå¯èªæ§ãæèããåœåãæšå¥šããã
- 倿°ã䜿ãããšã§ãããŒã¿ã管çãããããªã

3. Cèšèªã®ããŒã¿åã®æŠèŠ
ããŒã¿åãšã¯ïŒ
Cèšèªã§ã¯ãããŒã¿åïŒData TypeïŒ ãæç¢ºã«æå®ããããšã§ã倿°ãæ±ãããŒã¿ã®çš®é¡ãšã¡ã¢ãªã®äœ¿çšéãæ±ºå®ããŸããé©åãªããŒã¿åãéžæããããšã§ãã¡ã¢ãªã®å¹çå ã å倿ã«ãããã°ã®é²æ¢ ãå¯èœã«ãªããŸãã
Cèšèªã®ããŒã¿åã®ç¹åŸŽ
â
ããŒã¿ã®çš®é¡ãæç¢ºã«ããïŒæŽæ°ãæµ®åå°æ°ç¹ãæåãªã©ïŒ
â
ã¡ã¢ãªäœ¿çšéãæé©åããïŒåããšã«äœ¿çšããã¡ã¢ãªãµã€ãºãç°ãªãïŒ
â
åå€æãæŒç®æã®åäœã決å®ããïŒæŽæ°å士ã®èšç®ãå°æ°ã®èšç®ãªã©ïŒ
ããšãã°ã次ã®ããã«æŽæ°åãšæµ®åå°æ°ç¹åã§ã¯æ±ããããŒã¿ãç°ãªããŸãã
int age = 25; // æŽæ°ïŒæŽæ°å€ã®ã¿æ ŒçŽå¯èœïŒ
float pi = 3.14; // æµ®åå°æ°ç¹æ°ïŒå°æ°ãæ±ããïŒ
char letter = 'A'; // æååïŒ1æåã®ã¿æ ŒçŽïŒ
Cèšèªã®ããŒã¿åã®åé¡
Cèšèªã®ããŒã¿åã¯ã倧ãã åºæ¬ããŒã¿å 㚠掟çããŒã¿å ã®2ã€ã«åé¡ã§ããŸãã
ããŒã¿åã®çš®é¡ | æŠèŠ |
---|---|
åºæ¬ããŒã¿å | 倿°ã®åºæ¬çãªåïŒint , float , char ãªã©ïŒ |
掟çããŒã¿å | åºæ¬ããŒã¿åãçµã¿åããããã®ïŒé å, æ§é äœ, ãã€ã³ã¿ ãªã©ïŒ |
åºæ¬ããŒã¿å
åºæ¬ããŒã¿åã¯ãCèšèªã®ããã°ã©ã ã«ãããŠæããã䜿çšãããããŒã¿åã§ãã
æŽæ°åïŒIntegerïŒ
æŽæ°ãæ±ãããŒã¿åã§ãè² ã®å€ã»æ£ã®å€ãæ ŒçŽã§ããŸãã
ããŒã¿å | ã¡ã¢ãªãµã€ãºïŒæšæºïŒ | æ ŒçŽã§ããå€ã®ç¯å²ïŒ32bitç°å¢ïŒ |
---|---|---|
int | 4ãã€ãïŒ32ãããïŒ | -2,147,483,648 ïœ 2,147,483,647 |
short | 2ãã€ãïŒ16ãããïŒ | -32,768 ïœ 32,767 |
long | 4ïœ8ãã€ã | ç°å¢ã«ããïŒint ããåºãç¯å²ïŒ |
unsigned int | 4ãã€ã | 0 ïœ 4,294,967,295 |
int number = 100;
short smallNumber = 10;
unsigned int positiveOnly = 300;
æµ®åå°æ°ç¹åïŒFloating PointïŒ
å°æ°ãæ±ãããŒã¿åã§ã粟床ã®éãã«ãã£ãŠ float
ãš double
ããããŸãã
ããŒã¿å | ã¡ã¢ãªãµã€ãº | 粟床 |
---|---|---|
float | 4ãã€ã | çŽ6ïœ7æ¡ |
double | 8ãã€ã | çŽ15æ¡ |
long double | 10ïœ16ãã€ã | çŽ18æ¡ä»¥äž |
float pi = 3.14f; // "f" ãä»ããããšã§ float å
double precisePi = 3.1415926535;
æååïŒCharacterïŒ
1ã€ã®æåãæ ŒçŽããããã®ããŒã¿åã§ãå®éã«ã¯ æŽæ°ïŒASCIIã³ãŒãïŒ ãšããŠæ±ãããŸãã
ããŒã¿å | ã¡ã¢ãªãµã€ãº | æ ŒçŽã§ããããŒã¿ |
---|---|---|
char | 1ãã€ã | ‘A’, ‘b’, ‘9’ ãªã©ã®1æå |
char letter = 'A';
printf("%c", letter); // A ãåºå
ASCIIã³ãŒããšããŠæ±ããããããchar
ãæ°å€ãšããŠæŒç®ã«äœ¿çšã§ããŸãã
char letter = 'A';
printf("%d", letter); // 65ïŒ'A' ã® ASCIIã³ãŒãïŒ
掟çããŒã¿å
掟çããŒã¿åã¯ãåºæ¬ããŒã¿åãçµã¿åãããé«åºŠãªããŒã¿æ§é ãå®çŸ©ããããã«äœ¿çšãããŸãã
ããŒã¿å | 説æ |
---|---|
é åïŒArrayïŒ | åãåã®ããŒã¿ãé£ç¶ããŠæ ŒçŽ |
æ§é äœïŒstruct ïŒ | ç°ãªãåã®ããŒã¿ã1ã€ã®åäœãšããŠæ±ã |
å
±çšäœïŒunion ïŒ | ã¡ã¢ãªãå ±æããããŒã¿æ§é |
åæåïŒenum ïŒ | æå³ã®ãã宿°ãå®çŸ© |
ãã€ã³ã¿ïŒPointerïŒ | ã¡ã¢ãªã®ã¢ãã¬ã¹ãæ ŒçŽãã倿° |
ããŒã¿åã®éžæåºæº
é©åãªããŒã¿åãéžã¶ããšã¯ãããã°ã©ã ã®ããã©ãŒãã³ã¹ãšã¡ã¢ãªç®¡çã«åœ±é¿ ããŸãã
䜿çšã±ãŒã¹ | æšå¥šããŒã¿å | çç± |
---|---|---|
ã«ãŒãã«ãŠã³ã¿ | unsigned int | 笊å·ãäžèŠã§å¹çãè¯ã |
粟床ã®é«ãèšç® | double | float ãã粟床ãé«ã |
ã¡ã¢ãªãç¯çŽããã | short / char | å¿ èŠæå°éã®ãµã€ãºã§ç®¡ç |
æååã®1æåãæ±ã | char | 1ãã€ãã§æåã管ç |
for (unsigned int i = 0; i < 100; i++) {
printf("%d ", i);
}
ãŸãšã
- Cèšèªã®ããŒã¿åã«ã¯ åºæ¬ããŒã¿åïŒæŽæ°åãæµ®åå°æ°ç¹åãæååïŒãš æŽŸçããŒã¿åïŒé åãæ§é äœããã€ã³ã¿ ãªã©ïŒãããã
- é©åãªããŒã¿åãéžã¶ããšã§ãããã°ã©ã ã®å¹çãåäžã§ããã
- æŽæ°åã¯
int
ãæµ®åå°æ°ç¹åã¯double
ãäžè¬çã - 掟çããŒã¿åãæŽ»çšãããšãè€éãªããŒã¿æ§é ãæ±ãããããªãã
4. åºæ¬ããŒã¿åïŒããªããã£ãåïŒ
åºæ¬ããŒã¿åãšã¯ïŒ
Cèšèªã®åºæ¬ããŒã¿åïŒããªããã£ãåïŒã¯ãæãåºæ¬çãªããŒã¿ã®çš®é¡ã衚ãå ã§ããããã¹ãŠã®å€æ°ãããŒã¿æ§é ã®åºç€ãšãªããŸãããããã®åãçè§£ããé©åã«éžæããããšã§ãããã°ã©ã ã®å¹çåãã¡ã¢ãªç®¡çã®æé©å ãå¯èœã«ãªããŸãã
Cèšèªã«ã¯äž»ã«ä»¥äžã® 3çš®é¡ã®åºæ¬ããŒã¿å ããããŸãã
ããŒã¿å | 説æ | 䜿çšäŸ |
---|---|---|
æŽæ°åïŒIntegerïŒ | æŽæ°ãæ±ãå | int , short , long |
æµ®åå°æ°ç¹åïŒFloating PointïŒ | å°æ°ãæ±ãå | float , double |
æååïŒCharacterïŒ | 1æåãæ±ãå | char |
ããããã®ããŒã¿åã«ã€ããŠè©³ãã解説ããŠãããŸãã
1. æŽæ°åïŒIntegerïŒ
æŽæ°åã¯ æŽæ°ãæ ŒçŽããããã®ããŒã¿å ã§ãããããã°ã©ã ã§æãé »ç¹ã«äœ¿çšãããåã®1ã€ã§ãã
æŽæ°åã®çš®é¡ãšã¡ã¢ãªãµã€ãº
æŽæ°åã«ã¯ 笊å·ããïŒsignedïŒ ãš ç¬Šå·ãªãïŒunsignedïŒ ã®ãã®ããããŸãã
ããŒã¿å | ã¡ã¢ãªãµã€ãºïŒæšæºïŒ | æ ŒçŽã§ããå€ã®ç¯å²ïŒ32bitç°å¢ïŒ |
---|---|---|
int | 4ãã€ãïŒ32ãããïŒ | -2,147,483,648 ïœ 2,147,483,647 |
short | 2ãã€ãïŒ16ãããïŒ | -32,768 ïœ 32,767 |
long | 4ïœ8ãã€ã | ç°å¢ã«ããïŒint ããåºãç¯å²ïŒ |
unsigned int | 4ãã€ã | 0 ïœ 4,294,967,295 |
æŽæ°åã®äœ¿çšäŸ
#include <stdio.h>
int main() {
int num = 100; // äžè¬çãªæŽæ°å
short smallNum = 10; // å°ããæŽæ°ïŒã¡ã¢ãªç¯çŽïŒ
long bigNum = 1000000; // 倧ããªæŽæ°
unsigned int positiveOnly = 300; // æ£ã®æŽæ°ã®ã¿
printf("num: %d, smallNum: %d, bigNum: %ld, positiveOnly: %u\n", num, smallNum, bigNum, positiveOnly);
return 0;
}
2. æµ®åå°æ°ç¹åïŒFloating PointïŒ
æµ®åå°æ°ç¹åã¯ å°æ°ãæ±ãããŒã¿å ã§ãã
æŽæ°åãšã¯ç°ãªããå°æ°ãæ£ç¢ºã«è¡šçŸã§ããŸãã
æµ®åå°æ°ç¹åã®çš®é¡
ããŒã¿å | ã¡ã¢ãªãµã€ãº | ç²ŸåºŠïŒæå¹æ¡æ°ïŒ |
---|---|---|
float | 4ãã€ã | çŽ6ïœ7æ¡ |
double | 8ãã€ã | çŽ15æ¡ |
long double | 10ïœ16ãã€ã | çŽ18æ¡ä»¥äž |
æµ®åå°æ°ç¹åã®äœ¿çšäŸ
#include <stdio.h>
int main() {
float pi = 3.14f; // "f" ãã€ãããš float å
double precisePi = 3.1415926535; // ãã粟床ã®é«ã double å
printf("pi (float): %.7f\n", pi);
printf("precisePi (double): %.15lf\n", precisePi);
return 0;
}
3. æååïŒCharacterïŒ
æååïŒchar
ïŒã¯ 1æåãæ ŒçŽããããŒã¿å ã§ãããå®éã«ã¯ æŽæ°ïŒASCIIã³ãŒãïŒ ãšããŠæ±ãããŸãã
æååã®ç¹åŸŽ
- 1ãã€ãïŒ8ãããïŒã®ã¡ã¢ãªã䜿çš
char
å㯠ASCIIã³ãŒãã䜿çšããŠå éšçã«æŽæ°ãšããŠæ±ããã
æååã®äœ¿çšäŸ
#include <stdio.h>
int main() {
char letter = 'A'; // æåãæ ŒçŽ
printf("letter: %c\n", letter);
printf("ASCIIã³ãŒã: %d\n", letter); // 'A' 㯠65
return 0;
}
åºæ¬ããŒã¿åã®é©åãªéžæ
ã©ã®åºæ¬ããŒã¿åã䜿çšãããã¯ãããã°ã©ã ã®ç®çãã¡ã¢ãªã®å¶çŽã«å¿ããŠæ±ºå® ããŸãã
䜿çšã±ãŒã¹ | æšå¥šããŒã¿å | çç± |
---|---|---|
ã«ãŒãã«ãŠã³ã¿ | unsigned int | è² ã®æ°ãäžèŠã§å¹çãè¯ã |
å°æ°ã®èšç® | double | float ãã粟床ãé«ã |
ã¡ã¢ãªç¯çŽ | short / char | å¿ èŠæå°éã®ãµã€ãºã§ç®¡ç |
æååã®1æåãæ±ã | char | 1ãã€ãã§ç®¡çã§ãã |
short smallNum = 32767; // ã¡ã¢ãªãç¯çŽ
ãŸãšã
- åºæ¬ããŒã¿å㯠Cèšèªã®ããã°ã©ã ã®åºç€ ã§ãããæŽæ°ã»å°æ°ã»æåãæ±ã
- æŽæ°åïŒ
int
,short
,long
ïŒã¯æŽæ°ãæ±ãã笊å·ãªãïŒunsigned
ïŒã䜿çšå¯èœ - æµ®åå°æ°ç¹åïŒ
float
,double
ïŒã¯å°æ°ãæ±ãã粟床ã«å¿ããŠäœ¿ãåã - æååïŒ
char
ïŒã¯1æåãæ±ããå éšçã«æŽæ°ãšããŠä¿åããã - é©åãªããŒã¿åãéžã¶ããšã§ãããã°ã©ã ã®å¹çãåäžãããã¡ã¢ãªã®ç¯çŽãå¯èœ
5. 掟çããŒã¿åïŒDerived Data TypesïŒ
掟çããŒã¿åãšã¯ïŒ
Cèšèªã®æŽŸçããŒã¿åïŒDerived Data TypesïŒ ãšã¯ãåºæ¬ããŒã¿åãçµã¿åãããŠããè€éãªããŒã¿æ§é ãäœãããã®å ã§ããåºæ¬ããŒã¿åã ãã§ã¯è¡šçŸãã«ããããŒã¿æ§é ãç°¡æœã«æ±ãããã«äœ¿çšãããŸãã
代衚çãªæŽŸçããŒã¿åã«ã¯ä»¥äžã®ãã®ããããŸãã
ããŒã¿å | 説æ |
---|---|
é åïŒArrayïŒ | è€æ°ã®åãåã®ããŒã¿ãæ ŒçŽãã |
æ§é äœïŒstruct ïŒ | ç°ãªãåã®ããŒã¿ã1ã€ã®åäœãšããŠç®¡çãã |
å
±çšäœïŒunion ïŒ | ã¡ã¢ãªãå ±æããããŒã¿æ§é |
åæåïŒenum ïŒ | æå³ã®ãã宿°ãå®çŸ©ãã |
ãã€ã³ã¿ïŒPointerïŒ | ã¡ã¢ãªã®ã¢ãã¬ã¹ãæ ŒçŽãã |
1. é åïŒArrayïŒ
é åãšã¯ãåãåã®ããŒã¿ãé£ç¶ããã¡ã¢ãªé åã«æ ŒçŽããããŒã¿æ§é ã§ãã
é åã®å®£èšãšåæå
ããŒã¿å é
åå[èŠçŽ æ°];
äŸïŒæŽæ°åã®é åïŒ
int numbers[5] = {10, 20, 30, 40, 50};
é åèŠçŽ ã®ã¢ã¯ã»ã¹
printf("%d\n", numbers[0]); // 10 ãåºå
numbers[1] = 25; // 2çªç®ã®èŠçŽ ãæŽæ°
倿¬¡å é åïŒ2Dé åïŒ
int matrix[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
â çšé: ããŒã¿ã®äžæ¬ç®¡çãè¡åæŒç®ããããã¡ç®¡çãªã©
2. æ§é äœïŒstruct
ïŒ
æ§é äœã¯ãç°ãªãåã®ããŒã¿ã1ã€ã®åäœãšããŠç®¡çã§ããããŒã¿å ã§ãã
æ§é äœã®å®çŸ©ãšäœ¿çš
struct Person {
char name[50];
int age;
float height;
};
int main() {
struct Person person1 = {"Taro", 25, 175.5};
printf("Name: %s, Age: %d, Height: %.1f cm\n", person1.name, person1.age, person1.height);
return 0;
}
â çšé: åŠçããŒã¿ãååæ å ±ãã²ãŒã ã®ãã£ã©ã¯ã¿ãŒæ å ±ãªã©
3. å
±çšäœïŒunion
ïŒ
å ±çšäœã¯ãã¡ã¢ãªãå ±æããç¹æ®ãªããŒã¿å ã§ãããåãã¡ã¢ãªé åãç°ãªãåã§äœ¿çš ã§ããŸãã
å ±çšäœã®å®çŸ©ãšäœ¿çš
union Data {
int i;
float f;
};
int main() {
union Data data;
data.i = 10;
printf("Integer: %d\n", data.i);
data.f = 3.14;
printf("Float: %.2f\n", data.f); // ããã§data.iã®å€ã¯äžå®ã«ãªã
return 0;
}
â çšé: ã¡ã¢ãªç¯çŽãå¿ èŠãªå Žé¢ïŒäŸãã°ãç°ãªãããŒã¿åœ¢åŒã1ã€ã®å€æ°ã§ç®¡çããå ŽåïŒ
4. åæåïŒenum
ïŒ
åæåã¯ãæå³ã®ãã宿°ãå®çŸ©ããããã®ããŒã¿å ã§ãã
åæåã®å®çŸ©ãšäœ¿çš
enum Color { RED, GREEN, BLUE };
int main() {
enum Color favoriteColor = GREEN;
printf("Favorite Color: %d\n", favoriteColor); // 1ïŒGREENã¯ããã©ã«ãã§0ããé çªã«çªå·ãä»ãïŒ
return 0;
}
â çšé: ç¶æ 管çïŒäŸïŒä¿¡å·æ©ã®è²ãææ¥ãã²ãŒã ã®ã¹ããŒã¿ã¹ïŒ
5. ãã€ã³ã¿ïŒPointerïŒ
ãã€ã³ã¿ã¯ã倿°ã®ã¢ãã¬ã¹ãæ ŒçŽããç¹æ®ãªããŒã¿å ã§ãã
ãã€ã³ã¿ã®åºæ¬
int a = 10;
int *ptr = &a; // 'a' ã®ã¢ãã¬ã¹ããã€ã³ã¿ã«æ ŒçŽ
printf("Address of a: %p\n", &a);
printf("Pointer Value: %p\n", ptr);
printf("Dereferenced Value: %d\n", *ptr); // 10
ãã€ã³ã¿ã®çšé
â
åçã¡ã¢ãªç®¡çïŒmalloc
/ free
ïŒ
â
颿°ãžã®é
åã®åãæž¡ã
â
æååæäœïŒchar *str
ïŒ
ãŸãšã
- é å ã¯åãåã®ããŒã¿ããŸãšããŠç®¡ç ãã
- æ§é äœ ã¯ç°ãªãåã®ããŒã¿ã1ã€ã®åäœãšããŠæ±ã
- å ±çšäœ ã¯ã¡ã¢ãªãå ±æããç¹æ®ãªããŒã¿å
- åæå ã¯æå³ã®ãã宿°ãå®çŸ©ãã
- ãã€ã³ã¿ ã¯å€æ°ã®ã¢ãã¬ã¹ãæ±ã
6. å修食åïŒType ModifiersïŒ
å修食åãšã¯ïŒ
Cèšèªã®å修食åïŒType ModifiersïŒ ã¯ãåºæ¬ããŒã¿åã®ç¹æ§ã倿Žããããã®ããŒã¯ãŒã ã§ãã
å修食åãé©åã«äœ¿çšããããšã§ãã¡ã¢ãªã®æé©åãããŒã¿ã®å®å
šæ§ãåŠçé床ã®åäž ãªã©ãå¯èœã«ãªããŸãã
Cèšèªã®äž»ãªå修食åã¯ä»¥äžã®ãšããã§ãã
å修食å | 説æ |
---|---|
const | 倿°ã®å€ã倿Žã§ããªãïŒå®æ°ïŒ |
volatile | æé©åãé²ãã倿°ã®å€ãæ¯åã¡ã¢ãªããååŸ |
restrict | ãã€ã³ã¿ã®æé©åãåäžããã |
signed | è² ã®å€ãå«ããæŽæ°åïŒããã©ã«ãïŒ |
unsigned | æ£ã®å€ã®ã¿ãæ±ãæŽæ°å |
1. const
ïŒå®æ°ã宣èšããïŒ
const
修食åã䜿çšãããšã倿°ã®å€ã倿Žã§ããªããªããŸãã
ãã㯠誀ã£ã代å
¥ãé²ããã³ãŒãã®å®å
šæ§ãåäž ãããããã«åœ¹ç«ã¡ãŸãã
const
ã®äœ¿çšäŸ
#include <stdio.h>
int main() {
const int MAX_USERS = 100; // 宿°ãšããŠå®£èš
printf("Max Users: %d\n", MAX_USERS);
// MAX_USERS = 200; // ãšã©ãŒïŒconst ãªã®ã§å€ã®å€æŽã¯ã§ããªã
return 0;
}
颿°ã®åŒæ°ã« const
ãé©çš
void printMessage(const char *message) {
printf("%s\n", message);
// message[0] = 'H'; // ãšã©ãŒïŒconstãªã®ã§å€æŽäžå¯
}
â
广: const
ã䜿ãããšã§ã颿°å
ã§ããŒã¿ã倿Žãããã®ãé²ãã
2. volatile
ïŒæé©åãé²ãïŒ
volatile
ã¯ãã³ã³ãã€ã©ã®æé©åãé²ãããã«äœ¿çš ãããŸãã
䞻㫠ããŒããŠã§ã¢ã¬ãžã¹ã¿ãã°ããŒãã«å€æ°ãå²ã蟌ã¿åŠç ã§å©çšãããŸãã
volatile
ã®äœ¿çšäŸ
#include <stdio.h>
volatile int flag = 0; // æé©åãé²ã
int main() {
while (flag == 0) {
// äœããã®åŠçïŒflagã倿ŽããããŸã§ã«ãŒãïŒ
}
printf("Flag changed!\n");
return 0;
}
â çšé:
- ãã«ãã¹ã¬ããåŠçã§ã®å€æ°ã®å€æŽæ€ç¥
- ããŒããŠã§ã¢ã¬ãžã¹ã¿ã®èªã¿åã
- å²ã蟌ã¿åŠçã§å€æŽããã倿°ã®ç£èŠ
3. restrict
ïŒãã€ã³ã¿ã®æé©åïŒ
restrict
㯠C99 ããå°å
¥ããã修食åã§ã
1ã€ã®ãã€ã³ã¿ãæãã¡ã¢ãªé åããä»ã®ãã€ã³ã¿ãšå
±æãããªãããšãä¿èšŒ ããŸãã
ããã«ãã æé©åãåäžããåŠçé床ãéããªã å ŽåããããŸãã
restrict
ã®äœ¿çšäŸ
#include <stdio.h>
void add_arrays(int *restrict a, int *restrict b, int *restrict result, int size) {
for (int i = 0; i < size; i++) {
result[i] = a[i] + b[i];
}
}
â çšé:
- ãã€ã³ã¿æŒç®ã®æé©å
- æ°å€èšç®ã®ããã©ãŒãã³ã¹åäž
- ãã¯ãã«æŒç®ïŒSIMDæé©åïŒ
4. signed
ãš unsigned
ïŒç¬Šå·ããã»ç¬Šå·ãªãæŽæ°ïŒ
Cèšèªã®æŽæ°åã«ã¯ã笊å·ããïŒsignedïŒ ãš ç¬Šå·ãªãïŒunsignedïŒ ã®2çš®é¡ããããŸãã
修食å | 説æ |
---|---|
signed | è² ã®å€ãå«ãæŽæ°ïŒããã©ã«ãïŒ |
unsigned | 0以äžã®æŽæ°ã®ã¿ |
signed
ïŒç¬Šå·ããæŽæ°ïŒã®äœ¿çšäŸ
int a = -10; // è² ã®å€ãæ ŒçŽå¯èœ
printf("%d\n", a); // -10 ãåºå
unsigned
ïŒç¬Šå·ãªãæŽæ°ïŒã®äœ¿çšäŸ
unsigned int b = 250;
printf("%u\n", b); // 250 ãåºå
unsigned int c = -10; // ãšã©ãŒïŒè² ã®å€ã¯æ ŒçŽã§ããªã
â çšé:
- è² ã®å€ã䜿ããªãã«ãŠã³ã¿ïŒã«ãŒã倿°ãªã©ïŒ
- ãã€ããªããŒã¿ã®åŠçïŒãããæŒç®ïŒ
- ã¡ã¢ãªãµã€ãºãæå¹æŽ»çš
â æ³šæ: unsigned
ã䜿çšãããšè² ã®å€ã代å
¥ã§ããªããããæå³ããªããªãŒããŒãããŒã«æ³šæã
int x = -1;
unsigned int y = x; // ãšã©ãŒãŸãã¯æå³ããªãçµæã«ãªã
ãŸãšã
å修食å | çšé | ã¡ãªãã |
---|---|---|
const | 倿Žã§ããªã倿°ãå®£èš | 誀ã£ã倿Žãé²ã |
volatile | æé©åãé²ã | å²ã蟌ã¿åŠçãããŒããŠã§ã¢ã¬ãžã¹ã¿ã®å€ãæ£ããååŸ |
restrict | ãã€ã³ã¿æé©å | ã¡ã¢ãªã®ç«¶åãé²ããé«éåŠçãå¯èœ |
signed | è² ã®å€ãå«ããæŽæ°å | è² ã®æ°ãæ±ãèšç®ã§æå¹ |
unsigned | æ£ã®å€ã®ã¿ãæ±ãæŽæ°å | ã¡ã¢ãªãç¯çŽããã«ãŠã³ã¿ããããæŒç®ã«é©çš |
7. å倿ïŒãã£ã¹ãïŒ
å倿ãšã¯ïŒ
Cèšèªã§ã¯ãç°ãªãããŒã¿åéã§ã®æŒç®ã代å
¥ãè¡ãéã«ãå倿ïŒType ConversionïŒ ãçºçããŸãã
å倿ã«ã¯ãæé»ã®å倿ïŒèªååå€æïŒ ãš æç€ºçãªå倿ïŒãã£ã¹ãïŒ ã®2çš®é¡ããããŸãã
é©åã«å倿ãçè§£ããªããšãããŒã¿ã®ç²ŸåºŠã倱ãããããæå³ããªããã°ãçºç ããããšããããããæ£ãã䜿ãåããããšãéèŠã§ãã
1. æé»ã®å倿ïŒèªåå倿ïŒ
Cèšèªã§ã¯ãç°ãªãããŒã¿ååå£«ã®æŒç®ã代å
¥ãè¡ããšãã³ã³ãã€ã©ãèªåçã«å倿ãè¡ã ããšããããŸãã
ããã æé»ã®å倿ïŒImplicit Type ConversionïŒ ãšãããŸãã
æé»ã®å倿ã®ã«ãŒã«
- å°ããããŒã¿å â 倧ããããŒã¿å ã«èªå倿ããã
- æŽæ°å â æµ®åå°æ°ç¹å ã«å€æããã
char
âint
ïŒASCIIã³ãŒããšããŠæ±ãããïŒ
æé»ã®å倿ã®äŸ
#include <stdio.h>
int main() {
int a = 10;
float b = a; // int â float ã«èªå倿
printf("b: %.2f\n", b); // åºå: b: 10.00
char letter = 'A';
int asciiValue = letter; // char â int ã«å€æïŒASCIIã³ãŒãïŒ
printf("ASCII value of A: %d\n", asciiValue); // åºå: ASCII value of A: 65
return 0;
}
2. æç€ºçãªå倿ïŒãã£ã¹ãïŒ
æç€ºçãªå倿ïŒExplicit Type ConversionïŒ ã§ã¯ãéçºè
ãæå³çã«ããŒã¿åã倿ããŸãã
ãã®å€æã ãã£ã¹ãïŒCastingïŒ ãšãããŸãã
ãã£ã¹ãã®åºæ¬æ§æ
(倿åŸã®ããŒã¿å) å€ãŸãã¯å€æ°
ãã£ã¹ãã®äœ¿çšäŸ
#include <stdio.h>
int main() {
int a = 10, b = 3;
float result = (float)a / b; // int ã float ã«å€æ
printf("Result: %.2f\n", result); // åºå: Result: 3.33
return 0;
}
â
a
ã (float)
ã§ãã£ã¹ãããããšã§ãæŽæ°å士ã®å²ãç®ã«ããåãæšãŠãé²ã ããšãã§ããã
3. ãã£ã¹ããå¿ èŠãªã±ãŒã¹
(1) æŽæ°å士ã®å²ãç®
int a = 5, b = 2;
float result = a / b; // çµæã¯ 2ïŒæŽæ°ã®ãŸãŸïŒ
float correctResult = (float)a / b; // æ£ãã 2.5 ã«ãªã
â
ãã€ã³ã: å°ãªããšãçæ¹ã float
ã«ãã£ã¹ããããšãçµæã float
ã«ãªãïŒ
(2) æµ®åå°æ°ç¹ â æŽæ°ïŒå°æ°éšåã®åãæšãŠïŒ
float pi = 3.14159;
int truncatedPi = (int)pi; // 3 ã«ãªãïŒå°æ°éšåãåãæšãŠïŒ
â æ³šæ: ãã£ã¹ããããš å°æ°ç¹ä»¥äžã¯åãæšãŠãããïŒ
(3) char
â int
ïŒæåãASCIIã³ãŒãã«å€æïŒ
char letter = 'B';
int ascii = (int)letter;
printf("ASCII Code: %d\n", ascii); // åºå: ASCII Code: 66
â
char
å㯠å
éšçã«æŽæ°ïŒASCIIã³ãŒãïŒ ãšããŠæ±ãããã
(4) void *
ããã®ãã£ã¹ãïŒãã€ã³ã¿ïŒ
ãã€ã³ã¿ã¯ void *
åã䜿ãããšã§æ±çšçã«æ±ãããšãã§ããŸãããé©åãªåã«ãã£ã¹ãããªããšèª€åäœã®åå ã«ãªããŸãã
void *ptr;
int num = 10;
ptr = #
int *intPtr = (int *)ptr; // void * ãã int * ã«ãã£ã¹ã
printf("Value: %d\n", *intPtr); // åºå: Value: 10
4. åå€æã®æ³šæç¹
(1) ããŒã¿ã®ç²ŸåºŠã倱ããã
å倿ãè¡ãéã«ã¯ãããŒã¿ã®ç²ŸåºŠã倱ãããå¯èœæ§ ããããŸãã
float num = 3.9;
int rounded = (int)num; // çµæ: 3ïŒå°æ°ç¹ä»¥äžãåãæšãŠãããïŒ
解決ç: åæšäºå
¥ãããå Žå㯠round()
ã䜿çš
#include <math.h>
int rounded = round(num); // 4 ã«ãªã
(2) unsigned
ãš signed
ã®å€æã«æ³šæ
unsigned int x = -1;
printf("%u\n", x); // åºå: 4294967295ïŒ32bitç°å¢ïŒ
â 笊å·ãªãåïŒunsignedïŒã«è² ã®å€ãä»£å ¥ãããšãæå³ããªãçµæã«ãªãïŒ
(3) 倧ããªåããå°ããªåãžã®å€æïŒãªãŒããŒãããŒã®å±éºïŒ
long bigNum = 100000;
short smallNum = (short)bigNum; // ããŒã¿ãæ£ããæ ŒçŽãããªãå¯èœæ§
â 解決ç: äºåã« sizeof()
ã§ããŒã¿ãµã€ãºã確èª
printf("Size of short: %lu bytes\n", sizeof(short));
ãŸãšã
å倿ã®çš®é¡ | 説æ | äŸ |
---|---|---|
æé»ã®å倿 | ã³ã³ãã€ã©ãèªåçã«åã倿 | int â float |
æç€ºçãªå倿ïŒãã£ã¹ãïŒ | éçºè ãæå³çã«åã倿 | (float)a / b |
æŽæ°å士ã®å²ãç® | int / int ã§ã¯å°æ°ãåãæšãŠããã | (float)5 / 2 â 2.5 |
æµ®åå°æ°ç¹ â æŽæ° | å°æ°éšåãåãæšãŠããã | (int)3.9 â 3 |
ãã€ã³ã¿ã®ãã£ã¹ã | void * ãé©åãªåã«å€æ | (int *)ptr |
å倿ãé©åã«äœ¿ãããªãããšã§ãå®å šã§ãã°ã®å°ãªãããã°ã©ã ãæžãããšãã§ããŸãã
8. 倿°ã®ã¹ã³ãŒããšå¯¿åœ
倿°ã®ã¹ã³ãŒãïŒæå¹ç¯å²ïŒãšã¯ïŒ
Cèšèªã§ã¯ã倿°ã®ã¹ã³ãŒãïŒScopeïŒ ãšã¯ã
ããã®å€æ°ãã©ãããåç
§ã§ãããïŒæå¹ç¯å²ïŒãã瀺ããŸãã
ã¹ã³ãŒãã¯ããã°ã©ã ã®èšèšã«åœ±é¿ãäžãã
é©åã«ç®¡çããªããšæå³ããªãåäœããã°ã®åå ã«ãªããŸãã
Cèšèªã®å€æ°ã¹ã³ãŒãã®çš®é¡
ã¹ã³ãŒãã®çš®é¡ | 説æ | æå¹ç¯å² |
---|---|---|
ããŒã«ã«å€æ° | 颿°å ã§ã®ã¿äœ¿çšå¯èœ | 宣èšããã颿°ãŸãã¯ãããã¯å |
ã°ããŒãã«å€æ° | ããã°ã©ã å šäœã§äœ¿çšå¯èœ | ããã°ã©ã å šäœ |
ãããã¯ã¹ã³ãŒã | {} å
ã§ã®ã¿æå¹ | 宣èšããããããã¯å |
ãã¡ã€ã«ã¹ã³ãŒã | ä»ã®ãã¡ã€ã«ããã¢ã¯ã»ã¹äžå¯ | å®çŸ©ããããã¡ã€ã«å |
1. ããŒã«ã«å€æ°ïŒLocal VariablesïŒ
ããŒã«ã«å€æ° ã¯ã颿°ãŸãã¯ããã㯠{}
ã®å
éšã§å®£èšããã
ãã® é¢æ°å
ã§ã®ã¿æå¹ ã§ãã
ããŒã«ã«å€æ°ã®äœ¿çšäŸ
#include <stdio.h>
void myFunction() {
int localVar = 10; // ããŒã«ã«å€æ°
printf("Local variable: %d\n", localVar);
}
int main() {
myFunction();
// printf("%d", localVar); // ãšã©ãŒïŒããŒã«ã«å€æ°ã¯é¢æ°å€ããã¢ã¯ã»ã¹äžå¯
return 0;
}
â ã¡ãªãã:
- 颿°éã§ã®åœ±é¿ãé²ããïŒå®å šæ§ãé«ãïŒ
- ã¡ã¢ãªã®ç¯çŽïŒé¢æ°ãçµäºãããšèªåçã«è§£æŸãããïŒ
â æ³šæç¹:
- 颿°å€ããã¢ã¯ã»ã¹äžå¯
- 颿°ãåŒã³åºããããã³ã«åæåãããïŒããŒã¿ã¯ä¿æãããªãïŒ
2. ã°ããŒãã«å€æ°ïŒGlobal VariablesïŒ
ã°ããŒãã«å€æ° ã¯ã颿°å€ã§å®£èšãããããã°ã©ã å šäœã§ã¢ã¯ã»ã¹å¯èœ ã§ãã
ã°ããŒãã«å€æ°ã®äœ¿çšäŸ
#include <stdio.h>
int globalVar = 100; // ã°ããŒãã«å€æ°
void myFunction() {
printf("Global variable: %d\n", globalVar);
}
int main() {
myFunction();
globalVar = 200; // ã©ãããã§ã倿Žå¯èœ
printf("Updated global variable: %d\n", globalVar);
return 0;
}
â ã¡ãªãã:
- ããã°ã©ã å šäœã§å€ãä¿æã§ãã
- è€æ°ã®é¢æ°éã§ããŒã¿ãå ±æã§ãã
â ãã¡ãªãã:
- æå³ããªã倿Žãçºçããå¯èœæ§ïŒãã°ã®åå ïŒ
- ã¡ã¢ãªãå æãç¶ãã
- ã¢ãžã¥ãŒã«åãã«ãããªã
ð 解決ç: static
ã䜿ã£ãŠã°ããŒãã«å€æ°ãå¶éããïŒæ¬¡ã®é
ã§èª¬æïŒ
3. éç倿°ïŒStatic VariablesïŒ
static
ãã€ãããšãããŒã«ã«å€æ°ã§ãå€ãä¿æãç¶ãã ããšãã§ããŸãã
ãŸããã°ããŒãã«å€æ°ã« static
ãã€ãããšããã®ãã¡ã€ã«å
ã§ã®ã¿æå¹ ã«ãªããŸãã
static
ã®äœ¿çšäŸïŒããŒã«ã«å€æ°ãä¿æïŒ
#include <stdio.h>
void counter() {
static int count = 0; // static ã§å€ãä¿æ
count++;
printf("Count: %d\n", count);
}
int main() {
counter(); // åºå: Count: 1
counter(); // åºå: Count: 2
counter(); // åºå: Count: 3
return 0;
}
â ã¡ãªãã:
- 颿°ãåŒã³åºããã³ã«å€ãä¿æ
- ã¡ã¢ãªç®¡çãç°¡å
â ãã¡ãªãã:
- ããã°ã©ã ãçµäºãããŸã§ã¡ã¢ãªãè§£æŸããªã
static
ã®äœ¿çšäŸïŒã°ããŒãã«å€æ°ãå¶éïŒ
static int fileVar = 100; // ãã®ãã¡ã€ã«å
ã§ã®ã¿æå¹
â ã¢ãžã¥ãŒã«åãããããªããå®å šæ§ãåäž
4. å€éšå€æ°ïŒExternïŒ
extern
ããŒã¯ãŒãã䜿ããšãä»ã®ãã¡ã€ã«ã«ãã倿°ãåç
§ã§ããŸãã
extern
ã®äœ¿çšäŸ
file1.c
#include <stdio.h>
int sharedVar = 50; // ã°ããŒãã«å€æ°
void printSharedVar() {
printf("Shared Variable: %d\n", sharedVar);
}
file2.c
#include <stdio.h>
extern int sharedVar; // file1.c ã®å€æ°ãåç
§
int main() {
printf("Accessing sharedVar: %d\n", sharedVar);
return 0;
}
â ã¡ãªãã:
- ä»ã®ãã¡ã€ã«ã®å€æ°ãå©çšã§ãã
â ãã¡ãªãã:
- äŸåé¢ä¿ã匷ããªããããä¿å®æ§ãäœäžãã
5. 倿°ã®å¯¿åœïŒã©ã€ãã¿ã€ã ïŒ
倿°ã®å¯¿åœïŒLifetimeïŒã¯ã倿°ãã¡ã¢ãªäžã«ååšããæé ãæããŸãã
倿°ã®çš®é¡ | 寿åœïŒã©ã€ãã¿ã€ã ïŒ | è§£æŸã¿ã€ãã³ã° |
---|---|---|
ããŒã«ã«å€æ° | 颿°ãå®è¡ãããé | 颿°ãçµäºãããšã |
ã°ããŒãã«å€æ° | ããã°ã©ã å šäœ | ããã°ã©ã çµäºæ |
éç倿° (static ) | ããã°ã©ã å šäœ | ããã°ã©ã çµäºæ |
åçã¡ã¢ãªç¢ºä¿ (malloc ) | free() ãåŒã¶ãŸã§ | free() ãåŒã¶ãŸã§ |
ãŸãšã
倿°ã®çš®é¡ | ã¹ã³ãŒãïŒæå¹ç¯å²ïŒ | 寿åœïŒã©ã€ãã¿ã€ã ïŒ |
---|---|---|
ããŒã«ã«å€æ° | 颿°å ã®ã¿ | 颿°ãçµäºãããŸã§ |
ã°ããŒãã«å€æ° | ããã°ã©ã å šäœ | ããã°ã©ã çµäºæ |
éç倿° (static ) | 宣èšãããã¹ã³ãŒãå | ããã°ã©ã çµäºæ |
å€éšå€æ° (extern ) | ä»ã®ãã¡ã€ã«ããåç §å¯èœ | 宣èšãããã¹ã³ãŒãå |
倿°ã®ã¹ã³ãŒããšå¯¿åœãé©åã«ç®¡çããããšã§ãã¡ã¢ãªã®ç¡é§ãé²ãããã°ã®å°ãªãããã°ã©ã ãäœæ ã§ããŸãã
9. å®è·µçãªããŒã¿åã®éžã³æ¹
ããŒã¿åã®éžæãéèŠãªçç±
Cèšèªã§ã¯ãããŒã¿åãé©åã«éžæããããšã§ãã¡ã¢ãªã®æé©åãèšç®ç²ŸåºŠã®ç¢ºä¿ãããã©ãŒãã³ã¹ã®åäž ãªã©ã®ã¡ãªããããããŸãã
é©åã§ãªãããŒã¿åãéžã¶ãšãã¡ã¢ãªã®ç¡é§é£ãããªãŒããŒãããŒãããŒã¿ã®æå€± ãªã©ã®åé¡ãçºçããå¯èœæ§ããããŸãã
1. ã¡ã¢ãªãç¯çŽãããå Žå
çµã¿èŸŒã¿ã·ã¹ãã ãã¡ã¢ãªå¶çŽã®ããç°å¢ã§ã¯ãã§ããã ãå°ããããŒã¿å ãéžæããããšãéèŠã§ãã
æŽæ°ã®ã¡ã¢ãªãµã€ãºãšéžã³æ¹
ããŒã¿å | ã¡ã¢ãªãµã€ãº | ç¯å²ïŒ32bitç°å¢ïŒ |
---|---|---|
char | 1ãã€ã | -128 ïœ 127 |
short | 2ãã€ã | -32,768 ïœ 32,767 |
int | 4ãã€ã | -2,147,483,648 ïœ 2,147,483,647 |
long | 4ïœ8ãã€ã | int ããåºãç¯å² |
unsigned int | 4ãã€ã | 0 ïœ 4,294,967,295 |
ã¡ã¢ãªç¯çŽã®äŸ
short temperature; // ã¡ã¢ãªç¯çŽã®ããã« short ã䜿çš
â é©çšå Žé¢: ã»ã³ãµãŒããŒã¿ãã«ãŒãã«ãŠã³ã¿ãå°ããç¯å²ã®å€ãæ±ã倿°
â æ³šæ: ç¯å²ãè¶ ãããšãªãŒããŒãããŒã®å±éºããïŒ
2. 粟床ãå¿ èŠãªå Žå
èšç®ç²ŸåºŠãéèŠãªå Žé¢ã§ã¯ãdouble
ã䜿ãããšã§äžžã誀差ãé²ã ããšãã§ããŸãã
æµ®åå°æ°ç¹ã®éžã³æ¹
ããŒã¿å | ã¡ã¢ãªãµã€ãº | æå¹æ¡æ° |
---|---|---|
float | 4ãã€ã | çŽ6ïœ7æ¡ |
double | 8ãã€ã | çŽ15æ¡ |
long double | 10ïœ16ãã€ã | çŽ18æ¡ä»¥äž |
粟床ã確ä¿ããäŸ
double distance = 1234567.1234567; // é«ç²ŸåºŠãªèšç®ãå¿
èŠãªå Žå
â é©çšå Žé¢: ç§åŠèšç®ãéèèšç®ã枬å®ããŒã¿
â æ³šæ: float
ã¯èª€å·®ã倧ãããªããããç²ŸåºŠãæ±ããããå Žé¢ã§ã¯ double
ã䜿çšããã
3. è² ã®å€ãæ±ããªãå Žå
unsigned
ã䜿ãããšã§ãæ£ã®ç¯å²ãåºããŠã¡ã¢ãªå¹çãäžãã ããšãã§ããŸãã
è² ã®å€ãæ±ããªãå Žåã®äŸ
unsigned int score = 250;
â é©çšå Žé¢: ã«ãŠã³ã¿ããµã€ãºæå®ããããæŒç®
â æ³šæ: unsigned
ã䜿çšãããšè² ã®å€ã代å
¥ã§ããªããããæå³ããªããªãŒããŒãããŒã«æ³šæã
int x = -1;
unsigned int y = x; // ãšã©ãŒãŸãã¯æå³ããªãçµæã«ãªã
4. ã«ãŒãã«ãŠã³ã¿ã«é©ããããŒã¿å
ã«ãŒãã«ãŠã³ã¿ã«ã¯ int
ããã unsigned int
ã®æ¹ãé©ããŠããŸãã
for (unsigned int i = 0; i < 1000; i++) {
// ã«ãŒãåŠç
}
â
ã¡ãªãã: unsigned
ã¯è² ã®å€ãèæ
®ããªããããåŠçãæé©åãããããã
5. æåãæ±ãå Žå
char
㯠1æåã®ã¿æ ŒçŽå¯èœ ã§ãããæååãæ±ãå Žå㯠char
é
åã䜿ãå¿
èŠããããŸãã
char letter = 'A'; // 1æåã®ã¿
char str[] = "Hello"; // æåå
â
é©çšå Žé¢: 1æåã®åŠçïŒchar
ïŒãæååã®åŠçïŒchar
é
åïŒ
6. åæåã§ã³ãŒããåããããã
æŽæ°å€ã æå³ã®ããååã§ç®¡ç ãããå Žåã¯ãenum
ã䜿ããšå¯èªæ§ãåäžããŸãã
enum Color { RED, GREEN, BLUE };
enum Color favoriteColor = GREEN;
â é©çšå Žé¢: ç¶æ 管çïŒäŸïŒä¿¡å·ã®è²ãææ¥ãã²ãŒã ã®ç¶æ ïŒ
7. ãã€ã³ã¿ã䜿ã£ãŠã¡ã¢ãªãæè»ã«ç®¡ç
ããŒã¿ã®æ ŒçŽå Žæãæè»ã«ç®¡çããå Žåã¯ããã€ã³ã¿ãäœ¿çš ããŸãã
int num = 10;
int *ptr = #
printf("Value: %d\n", *ptr); // 10
â é©çšå Žé¢: åçã¡ã¢ãªç®¡çã倧éã®ããŒã¿åŠç
8. æé©ãªããŒã¿åã®éžã³æ¹ïŒãŸãšãïŒ
䜿çšã±ãŒã¹ | æšå¥šããŒã¿å | çç± |
---|---|---|
ã«ãŒãã«ãŠã³ã¿ | unsigned int | è² ã®æ°ãäžèŠã§æé©åãããã |
å°ããªæŽæ° | short | ã¡ã¢ãªç¯çŽ |
粟床ã®é«ãèšç® | double | float ãã誀差ãå°ãªã |
笊å·ãªãããŒã¿ | unsigned int | ç¯å²ãåºãããã |
æåã®åŠç | char | 1æåã®ããŒã¿ãæ ŒçŽ |
ç¶æ 管ç | enum | èªã¿ããããã¹ãæžããã |
æè»ãªããŒã¿ç®¡ç | ãã€ã³ã¿ | ã¡ã¢ãªç®¡çã容æ |
â ãã€ã³ããŸãšã
- ã¡ã¢ãªç¯çŽãå¿
èŠãªã
short
ãchar
ã䜿ã - 粟床ãå¿
èŠãªã
double
ãéžã¶ - è² ã®å€ãäžèŠãªã
unsigned
ãæŽ»çšãã - å¯èªæ§ãåäžãããããã«
enum
ãæŽ»çšãã - ãã€ã³ã¿ã掻çšããã°ãæè»ãªã¡ã¢ãªç®¡çãå¯èœ
é©åãªããŒã¿åãéžã¶ããšã§ãããã°ã©ã ã®æé©åãå®å šæ§åäžãå¯èœ ã«ãªãã
10. ãŸãšã
Cèšèªã«ããã倿°ãšããŒã¿åã®éèŠæ§
Cèšèªã§ã¯ã倿°ãšããŒã¿åã®çè§£ãããã°ã©ãã³ã°ã®åºç€ ãšãªããŸãã
é©åãªããŒã¿åãéžæããããšã§ãã¡ã¢ãªã®æé©åãåŠçé床ã®åäžããã°ã®é²æ¢ ãå¯èœã«ãªããŸãã
æ¬èšäºã§ã¯ã以äžã®ãã€ã³ãã«ã€ããŠè©³ãã解説ããŸããã
1. 倿°ãšã¯ïŒ
- 倿°ã¯ããŒã¿ãæ ŒçŽããç®± ã§ãããããã°ã©ã å ã§å€æŽå¯èœãªå€ãä¿æããã
- 倿°ã®å®£èšãšåæåãå¿ èŠ ã§ãããé©åãªããŒã¿åãéžã¶ããšãéèŠã
int age = 25; // æŽæ°åã®å€æ°
float pi = 3.14; // å°æ°åã®å€æ°
char letter = 'A'; // æååã®å€æ°
2. Cèšèªã®ããŒã¿åã®æŠèŠ
- åºæ¬ããŒã¿åïŒæŽæ°åã»æµ®åå°æ°ç¹åã»æååïŒ
- 掟çããŒã¿åïŒé åã»æ§é äœã»å ±çšäœã»åæåã»ãã€ã³ã¿ïŒ
- é©åãªããŒã¿åãéžã¶ããšã§ãã¡ã¢ãªã®ç¡é§ãé²ããããã°ã©ã ãå¹çå ã§ããã
3. åºæ¬ããŒã¿åïŒããªããã£ãåïŒ
ããŒã¿å | ã¡ã¢ãªãµã€ãº | ç¹åŸŽ |
---|---|---|
int | 4ãã€ã | æŽæ° |
float | 4ãã€ã | å°æ°ãæ±ããã粟床ãäœã |
double | 8ãã€ã | 粟床ã®é«ãå°æ° |
char | 1ãã€ã | 1æåãæ ŒçŽ |
4. 掟çããŒã¿åïŒé åã»æ§é äœã»å ±çšäœã»åæåã»ãã€ã³ã¿ïŒ
- é åïŒArrayïŒ â åãåã®ããŒã¿ãè€æ°æ ŒçŽãã
- æ§é äœïŒ
struct
ïŒ â ç°ãªãåã®ããŒã¿ã1ã€ã®åäœãšããŠç®¡çãã - å
±çšäœïŒ
union
ïŒ â ã¡ã¢ãªãå ±æããç¹æ®ãªããŒã¿å - åæåïŒ
enum
ïŒ â æå³ã®ãã宿°ãå®çŸ©ãã - ãã€ã³ã¿ïŒPointerïŒ â ã¡ã¢ãªã®ã¢ãã¬ã¹ãæ ŒçŽããæè»ãªããŒã¿ç®¡çãå¯èœ
5. å修食å
å修食åã䜿çšããããšã§ãããŒã¿åã®ç¹æ§ã倿Žå¯èœã
修食å | 説æ |
---|---|
const | 宿°ïŒå€ã倿Žäžå¯ïŒ |
volatile | æé©åãé²ãïŒããŒããŠã§ã¢åŠçåãïŒ |
restrict | ãã€ã³ã¿ã®æé©å |
unsigned | æ£ã®å€ã®ã¿ |
const int MAX_USERS = 100; // å€ã倿Žäžå¯
6. å倿ïŒãã£ã¹ãïŒ
ç°ãªãããŒã¿åéã®å€æãå¿
èŠãªå Žåã
æé»ã®å倿ïŒèªåïŒãšæç€ºçãªå倿ïŒãã£ã¹ãïŒ ãè¡ãããã
int a = 10;
float b = (float)a / 3; // ãã£ã¹ã
7. 倿°ã®ã¹ã³ãŒããšå¯¿åœ
- ããŒã«ã«å€æ° â 颿°å ã®ã¿æå¹
- ã°ããŒãã«å€æ° â ããã°ã©ã å šäœã§æå¹ïŒãã ã管çã«æ³šæïŒ
static
â å€ãä¿æã§ããããã¹ã³ãŒãã¯éå®ãããextern
â ä»ã®ãã¡ã€ã«ãã倿°ãåç §ã§ãã
static int counter = 0; // å€ãä¿æããããŒã«ã«å€æ°
8. å®è·µçãªããŒã¿åã®éžã³æ¹
䜿çšã±ãŒã¹ | æšå¥šããŒã¿å | çç± |
---|---|---|
ã«ãŒãã«ãŠã³ã¿ | unsigned int | è² ã®æ°ãäžèŠã§å¹çç |
å°ããªæŽæ° | short | ã¡ã¢ãªç¯çŽ |
粟床ã®é«ãèšç® | double | float ãã誀差ãå°ãªã |
ç¶æ 管ç | enum | èªã¿ããããã¹ãæžããã |
æè»ãªããŒã¿ç®¡ç | ãã€ã³ã¿ | åçã¡ã¢ãªç®¡çã«é©çš |
9. FAQïŒãããã質åïŒ
Q1. int
ãš long
ã®éãã¯ïŒ
A: long
㯠int
ãããåºãç¯å²ã®å€ãæ ŒçŽã§ããããã ããç°å¢ã«ãã£ãŠãµã€ãºãç°ãªãå Žåãããã
long num = 1000000;
Q2. float
ãš double
ã¯ã©ã¡ãã䜿ãã¹ãïŒ
A: 粟床ãå¿
èŠãªã double
ãã¡ã¢ãªç¯çŽãå¿
èŠãªã float
ã
double distance = 3.1415926535;
Q3. unsigned
ã䜿ããšäœãéãïŒ
A: unsigned
ã¯ è² ã®å€ãæ±ããããã倧ããªæ£ã®å€ãæ ŒçŽ ã§ããã
unsigned int positive = 250;
Q4. char
åã¯æ°å€ãšããŠã䜿ããïŒ
A: ASCIIã³ãŒããšããŠæŽæ°ã®æŒç®ãå¯èœã
char letter = 'A';
int ascii = (int)letter; // 65
Q5. const
ã䜿ãã¡ãªããã¯ïŒ
A: 誀ã£ãŠå€ã倿Žããããšãé²ããå®å šæ§ãåäžããã
const int MAX_VALUE = 100;
ãŸãšã
- Cèšèªã§ã¯ãé©åãªããŒã¿åã®éžæãããã°ã©ã ã®å質ãåäžããã
- å修食åããã£ã¹ããæŽ»çšããããšã§ãå®å šã§å¹ççãªããã°ã©ã ãæžãã
- ã¹ã³ãŒããšå¯¿åœãçè§£ããããšã§ã倿°ã®é©åãªç®¡çãã§ãã
- å®è·µçãªããŒã¿åã®éžã³æ¹ãç¥ãããšã§ãããè¯ãã³ãŒãèšèšãå¯èœ
Cèšèªã®ããŒã¿åãé©åã«äœ¿ãããªããå¹ççã§ãã°ã®å°ãªãããã°ã©ã ãç®æããŸãããïŒ