GAIO CLUB
#include <stdio.h>
unsigned int UI = 0x89ABCDEF;
unsigned short test(unsigned short US)
{
printf(" Test : 0x%X\n",US);
printf("Test ---> Main : 0x%X\n",UI);
return UI; /* unsigned int → unsigned short */
}
int main(void)
{
unsigned int AUI;
printf("Main ---> Test : 0x%X\n",UI);
AUI = test(UI); /* unsigned int → unsigned short */
printf(" Main : 0x%X\n",AUI);
}
Main ---> Test : 0x89ABCDEF
Test : 0xCDEF
Test ---> Main : 0x89ABCDEF
Main : 0xCDEF
#include <stdio.h>
unsigned int U = 10;
unsigned int SUB1(void)
{
U += 1;
printf("SUB1 : %u\n",U);
return U;
}
unsigned int SUB2(void)
{
U -= 2;
printf("SUB2 : %u\n",U);
return U;
}
int main(void)
{
unsigned int AU;
AU = SUB1() + SUB2(); /* どちらの関数が先に呼ばれるか? */
printf("%u = SUB1() + SUB2()\n",AU);
return 0;
}
SUB1 : 11
SUB2 : 9
20 = SUB1() + SUB2()
SUB2 : 8
SUB1 : 9
17 = SUB1() + SUB2()
#include <stdio.h>
int I = 0x0FF000;
int P8 = 8;
int P64 = 64;
int P65 = 65;
int M8 = -8;
int M64 = -64;
int M65 = -65;
int main(void)
{
printf("0x%08.8X : 0x%08.8X << %d\n",I<<P8,I,P8);
printf("0x%08.8X : 0x%08.8X << %d\n",I<<P64,I,P64);
printf("0x%08.8X : 0x%08.8X << %d\n",I<<P65,I,P65);
printf("0x%08.8X : 0x%08.8X << %d(0x%X)\n",I<<M8,I,M8,M8);
printf("0x%08.8X : 0x%08.8X << %d(0x%X)\n",I<<M64,I,M64,M64);
printf("0x%08.8X : 0x%08.8X << %d(0x%X)\n",I<<M65,I,M65,M65);
return 0;
}
0x0FF00000 : 0x000FF000 << 8
0x000FF000 : 0x000FF000 << 64
0x001FE000 : 0x000FF000 << 65
0x00000000 : 0x000FF000 << -8(0xFFFFFFF8)
0x000FF000 : 0x000FF000 << -64(0xFFFFFFC0)
0x00000000 : 0x000FF000 << -65(0xFFFFFFBF)
浅野 昌尚(あさの まさなお)
ガイオ・テクノロジー株式会社
開発1部 QTXグループ
1980年代から30年以上にわたり汎用構造のCコンパイラ開発に従事し、その間に8ビットマイコンからRISC・VLIW・画像処理プロセッサまで、さまざまなCPU向けのクロスCコンパイラを開発。