@wywm@z[y[W
ŏIXVF2025N12
1D\
@PythonCJavaScriptCC̏ʋKiłC++ɂ́ANXƂlAIuWFNgwƌ܂ACɂ̓IuWFNgwƂĂ̐i͂܂B̑̂\łBNX́AC̍\̂WApƂTÔƂƂł܂BIuWFNgw̃NXƓlAC̍\̂AX̃f[^A(\bhƂ͂܂)Ƃł܂B
@ႦAX[p[ŁAi\̂pčsƂAiAށA[J[AiA̔Aݐϔ̔AɐAdꉿiAdAWʒuAlƌf[^ƁA̔ɐCAɕs̏ꍇɌxsales()Cd̓ŗݐϔ̔ʂllvZdiscount()CiEilD쐬pricetag()ƌL\̂pӂ̂łA
struct good {
char *name; // i
int type; // i^Cv
char *maker; // [J[
int price; // i
int salescount_day; // ̔
int salescount_cum; // ݐϔ̔
int stock; // ɐ
int purchaseprice; // dꉿi
time_t purchaseday; // d
int location; // iWʒu
float discountrate; // l
unsigned char *priceimg; // lD摜ւ̃|C^
int (*sales)(struct good *); // Ƀ`FbN
float (*discount)(); // lvZ
int (*pricetag)(); // lD摜𐧍삷
};
Ƃ܂B\̓̊ef[^\̂o[ƌ܂B\̂`Ƃ́Astructɑč\̖(Lłgood)A'{''}'̊Ԃɍ\̂̃o[̒`܂Bo[ɂ͊邱Ƃł܂B
@܂AɃ`FbNƂāAȉ̂悤func1()pӂ܂B
int func1(struct good *pg1) {
pg1->salescount_cum += pg1->salescount_day;
pg1->stock -= pg1->salescount_day;
if (pg1->stock < 10) {
printf("%s̎dꂪKvłBɐF%d\n", pg1->name, pg1->stock);
return -1;
}
return 0;
}
@\goodgāAَq(i^Cv3791Ƃ܂)ɁAߘaق́u܂₩`R[gvƂiAi230~Aɐ100Adꉿi159~2024N521ɎdꂽƂāȀĩf[^o^ۂɂ́Aȉ̂悤ɍ\̂̎(IuWFNgwŌƂ̃CX^X̂悤Ȃ)ݒ肵܂BOgood\̂錾ĂA\good̎g1ƁA\good̔zgoods`AɁAɃ`FbNLfunc1()ClvZfunc2()ClD摜func3()Ƃ܂B炩߁A
int goodnum = 0; // iԍ
time_t t1;
struct tm tm1;
struct good g1;
struct good goods[30000];
ƕϐ錾ĂA
tm1.tm_year = 2024;
tm1.tm_mon = 4; // |1ɒ
tm1.tm_mday = 21;
t1 = mktime(&tm1);
@
g1.name = "܂₩`R[g";
g1.type = 3791;
g1.maker = "ߘa";
g1.price = 230;
g1.stock = 100;
g1.purchaseprice = 159;
g1.purchaseday = t1;
g1.sales = func1;
g1.discount = func2;
g1.pricetag = func3;
goods[goodnum++] = g1;
ƂāA\̂̎̂̃o[ɂ܂₩`R[g̃f[^Zbg܂B
@ł́Agood\̂̔zgoodsvf30000ƂĊmۂA30000̏ĩf[^i[ł܂BŌgoods[goodnum++] = g1ƂA\g1̑So[̒lAzvfɂ܂Ƃ߂đ܂Bgoodnum͏iԍ̃JE^ŁAŏ0ŁAio^邽тɁAgoodnum++Ƃ1Ă܂Bg1̃o[́Ao[namełA'.'pāAg1.nameƂăANZX܂B܂A\̂̃f[^ʒuAhXlƂ|C^pg1(=&g1)gāAo[nameɃANZXƂ́A'->'pāApg1->nameƂ܂B
@g1.name = "܂₩`R[g"ƂāAg1.nameɏiݒ肳܂Ag1.nameɓ̂́A"܂₩`R[g"̐擪AhXłB{̂\̎̂ɓ킯ł͂܂({̂\̎̂̒ɓĂ܂ƂłȂ킯ł͂܂)BLfunc1()̒`́Aint func1(struct good *pm1)ƂȂĂ܂A\̓Ɋւ̎QƂꍇɂ́Ao[̐lԂւ̃|C^(̂́Aێ̂́AɈʒũR[h̐擪AhXł)saleŝݏA͏ȗA
int (*sales)(struct good *);
ƋLq܂B\good̃o[salesɊfunc1()ݒ肷ꍇ́A
g1.sales = func1;
̂悤ɂāAւ̃|C^ێg1.salesɑ`ŁAfunc1Zbg܂B
@\̂̃o[łĂяoꍇ͈ȉ̂悤ɂ܂B
g1.salescount_day = 7;
printf("7܂B\n");
g1.sales(&g1);
g1.salescount_day = 85;
printf("85܂B\n");
g1.sales(&g1);
ʂɂ́A
7܂B
85܂B
܂₩`R[g̎dꂪKvłBɐF8
ƕ\܂Bg1.sales(&g1)ŁA\g1̂̂łȂAg1ւ̃|C^&g1ɂȂĂ̂́A\̂̃TCY96oCg傫łBg1ւ̃|C^ł8oCgōς݂܂Bg1.salesɃZbgĂfunc1()̖{̂ł́Aint func1(struct good *pg1)ƂĂāAgood\̂ւ̃|C^pg1ƂĂāAɁAg1̈ʒuAhXĂ܂Bg1̂ł͂ȂAg1ւ̃|C^pg1pāAg1̃o[ɃANZX邽߂ɂ́A'->'Zqp܂Bo[namełApg1->nameƂ܂B
@func1()ł́Aݐϔ̔pg1->salescount_cumɁA̔pg1->salescount_dayAɐpg1->stock瓖̔pg1->salescount_dayAɐ10ɂȂƁAudꂪKvłvƂbZ[Wo悤ɂȂĂ܂B
@܂ALtm\̂oĂ܂A̍\̂́Atm_year(N\܂)Ctm_mon(̐l1l\܂B5Ȃ4ł)Ctm_mday(̐l\܂)Ƃo[ĂAݒ肵āA\̂ւ̃|C^mktime()ɓnƁAtime_t^(CYGWINł́A菄sys/_types.hƂt@Clong^defineĂ܂)̎f[^ԂĂ܂B̋@\g߂ɂ́A<time.h>includeĂB
2Dp
@HTMLȂǂŕFȂǂw肷ꍇɁAcrimsonƂFw肷ꍇARGB#dc143cƐݒ肵܂AԂ̋dcC̋14C̋3cłBFR[hAꂼ̐F̋߂AƂ悤ȏꍇɋp̂g܂Bp̂̐錾͍\̂Ɠlɍs܂A\̂Ƃ͈ႢAp̂̃o[́ASċp̂̐擪AhX烁ɔzu܂B
@p̂́Aȉ̂悤ɒ`܂B
union rgb {
int code;
unsigned char c[4];
}
^ϐcode4oCg̔zc[4]́A̓ʒuɏd˂Ĕzu܂Bϐcolor1
union rgb color1;
Ɛ錾܂Bp̂̃oւ̃ANZX\̂Ɠlɍs܂B
color1.code = 0xdc143c;
printf("rgb:%06x, r:%02x, g:%02x, b:%02x\n", color1.code, color1.c[2], color1.c[1], color1.c[0]);
color.c[2] = 0x37;
color.c[1] = 0xc2;
color.c[0] = 0x5e;
printf("rgb:%06x, r:%02x, g:%02x, b:%02x\n", color1.code, color1.c[2], color1.c[1], color1.c[0]);
ƂƁAʂɁA
rgb:dc143c, r:dc, g:14, b:3c
rgb:37c25e, r:37, g:c2, b:5e
ƕ\܂B
3DO
@CɂAPythontry`except̏Ǝ悤Ȏdg݂܂BPythontry`exceptɎĂAƂJavaScriptaddEventListner\bhɋ߂ƂāAsignal()܂BvOsCtrl-CƁAvOIɎs~܂A~ɁAsp邱Ƃł܂BCtrl-CL[oƁASIGINTO܂Asignal()ɂA̗Oߑ邱Ƃł܂BOɁAhandler1()pӂĂAsleep()p10bx܂悤ɂāA
signal(SIGINT, handler1);
sleep(10);
sƁAPCx݂ɂȂ܂A10bȓCtrl-CƁASIGINTOāAhandler1()Ɉڂ܂Bhandler1()śAONʒu̎̍sɏi݂܂B
@ɁAalarm()ɂSIGALRMONāAw莞ԌɊmFƂsƂƂ\łBsleep(10)Ɠl̂Ƃalarm()ɂĎȉɌf܂B܂A2̃O[oϐpӂ܂B
int tenseconds = 0;
int handler1on = 0;
tensecondśAalarm()ɂSIGALRMO10bo1ɂȂ܂Bhandler1ońAhandler1()s1ɂĂAhandler1()sSIGALRMOdĔĂ10b㌟otenseconds1ɂȂȂ悤ɂ܂(AA͂̒x̗OdĎł͊Â̂łBhandler1()NĂhandler1on = 1sOɁASIGALRMOhandler2()NĂ܂AȂǁAȃ^C~O2̗OdȂƐ[ȏɊׂ邱Ƃ܂BȌds̃VXeQȂǂ̌ɂȂ邱Ƃ܂BxXATM̃f[^ĂāȀ낤Ƃ܂ɂ̏uԂɏHcxXõf[^ĂAƂsKȏdƁAguɂȂ肩˂܂)Bhandler1()Chandler2()͈ȉ̂悤ɂ܂B
void handler1() {
handler1on = 1;
printf("Ctrl-Co܂B\n");
signal(SIGINT, handler1);
handler1on = 0;
}
void handler2() {
if (handler1on) {/* handler1s͂1bL */
signal(SIGALRM, handler2);
alarm(1);
}
else tenseconds = 1;
}
Lł́Ahandler1()shandler2()NĂ܂ꍇA1bSIGALRMO܂Bmain()ł́A
signal(SIGINT, handler1);
signal(SIGALRM, handler2);
printf("10bԋxe܂BCtrl-CŋNĂB\n");
alarm(10);
while(1) {
if (tenseconds) {
printf("10bo߂̂ŋN܂B\n");
break;
}
exit(0);
}
ƂƁAsignal()ɂASIGINTOhandler1()NASIGALRMOhandler2()N悤ɂ܂B̌Awhile(1)ƂĖ[vAhandler2()ɂAtenseconds1ɂȂƁA[vłI܂BsƁAʂɁA
10bԋxe܂BCtrl-CŋNĂB
ƕ\܂A10bȓCtrl-CƁA邽тɁA
Ctrl-Co܂B
ƕ\A10bɁA
10bo߂̂ŋN܂B
ƕ\܂B
@alarm()Asignal()ł́AJavaScriptsetTimeout\bhقǂׂ͍̍sȂ̂ŁAAj[V\Ȃǂɂ͂ƂĂg܂AԂ̂Ƃ̊ĎȂǂɗpł܂BȂAsignal()𗘗p邽߂ɂ<signal.h>Asleep()Aalarm()𗘗p邽߂ɂ<unistd.h>AincludeĂB
@Oɂ́ȂɁA[U`SIGUSR1CSIGUSR2ƂOAraise()ŁAraise(SIGUSR1)Craise(SIGUSR2)Ƃ邱ƂɂASIGUSR1OASIGUSR2O邱Ƃł܂Bsignal(SIGUSR1, handler)ƂāASIGUSR1OɁAhandler()ɐڂƂł܂BvÕG[Ήɗpł܂Bnull|C^̐ɏނƔSIGSEGV(LیO)Cabort()SIGABRTȂǂ܂B
4DvEvZbT
@vEvZbT́ACRpC̃p[T(\)\[XEvỎ͂n߂OɁA\̗͂𐧌ł悤ɁA\[XEvOωc[łBvEvZbT̖߂́AfBNeBuƌĂ܂BfBNeBu̐擪ɂ'#'āA\[XEvO{̂Ƌʂł悤ɂ܂BfBNeBuɂ́A#includeC#defineC#ifC#endifC#elifC#elseC#ifdefC#ifndefȂǂ܂BC̕ł͂Ȃ̂ŁA';'tȂƂɒӂĂB
#include
@wb_Et@C̓ǂݍ݂Ɏg܂BCĂwb_Et@C(߂ꂽꏊɒuĂ܂)ǂݍޏꍇ́At@C'<'C'>'ł܂B̃wb_Et@ĆA"`"ł܂BC̃\[XEvOƓꏊɒûłBłȂꍇɂ́Aǂɑ݂̂pXw肷Kv܂B
#include <stdio.h>
#include "test.h"
#include "../../mydir/header/test.h"
̂悤Ɏw肵܂B
#define
@萔A萔AϐA\̖̂Ɏg܂Bϐ̒Zk`ꍇA̐lQƂꍇȂǂɕ֗łB\[XEvOŁAł邱Ƃmɂ邽߂ɃAt@xbg啶ŋLqČ邱Ƃ̂łAŋLqĂ͂ȂAƂ͂܂B
#define ARRAY_MAX 1024
#define TRUE 0xff
#define FALSE 0
#define BOOL unsigned char
#define good struct good
ƂĂƁAȍ~AvEvZbT́A\[XEvOint array[ARRAY_MAX]int array[1024]ɓǂݑւATRUE0xffɓǂݑւAFALSE0ɓǂݑւABOOLunsigned charɓǂݑւAgoodstruct goodɓǂݑւ܂Bstruct good *pg1Ƃ̂Agood *pg1ƏȗLq邱Ƃł܂BA
#define ARRAY_MAX 1024;
Ɩ';'tƁAint array[1024;]ƓǂݑւăG[ɂȂ̂ŒӂĂB
#ifC#elifC#elseC#endif
@\[XEvOɁAprintfU߂āAϐ̓j^ꍇAfoOǂ܂ŏڂ邩A邢̓foOɂ́AprintfAƂ悤ȏꍇɎg܂B
#define LEVEL 0
#if LEVEL > 2
printf("x1:%d\n", x1);
#endif
#if LEVEL > 1
printf("x2:%d\n", x2);
#endif
#if LEVEL > 0
printf("x3:%d\n", x3);
#endif
ƂȂĂꍇARpCĎsƉ\܂BłAŏ#define LEVEL 0#define LEVEL 1ƂăRpCAsƁAx317łA
x3:17
ƕ\܂B#define LEVEL 2ƂăRpCAsƁAx2293łA
x2:293
x3:17
ƕ\܂B#define LEVEL 3ƂăRpCAsƁAx17538łA
x1:7538
x2:293
x3:17
ƕ\܂BꍇGȏꍇA#elifC#elseg܂BMODECHILDł邩AYOUNGł邩AOLDł邩ɂāAo̓bZ[ẄقȂst@C쐬ꍇA
#if MODE = CHILD
message = "낤";
#elif MODE = YOUNG
message = "";
#else
message = "Ă";
#endif
ƂāAMODE̐ݒɂACHILDst@CAYOUNGst@CAOLDst@CʁXɍ쐬邱Ƃł܂B
#ifdef
@PɁAfoOł邩ȂAƂȂA#ifdefgāA
#define DEBUG
#ifdef DEBUG
printf("success!\n");
#endif
ƂăRpCAsƁADEBUGdefineĂ̂ŁAsuccess!ƕ\st@Cł܂AfoOIāA#define DEBUGA#define NODEBUGɂ邩A'/*'`'*/'ň͂ŃRgɂĂ܂ƁAsuccess!\Ȃst@C܂B
#ifndef
@#ifdefƂ͋tɁAdefineĂȂꍇɎs܂B
#define PRODUCT
#ifndef PRODUCT
printf("success!\n");
#endif
ƂăRpCAsƁAPRODUCTdefineĂ̂ŁAsuccess!\Ȃst@Cł܂B
yLz@LłB̊F܂̂x肽A낵肢܂B
yLz@L͂܂łłB