#include <stdio.h> int main(void) { int i; for(i=1;i<=100;i++) { long long int f = ((21846*i>>16)-(21845*i>>16))*2054842694; long long int b = ((13108*i>>16)-(13107*i>>16))*2054845762; printf((char*)&f); printf((char*)&b); f||b||printf("%d",i); puts(""); } } 整数型のポインタをchar*に読み替えるの、未定義動作だった気がするけど、よく理解していない。 さらには、文字コードがASCII互換かどうかは処理系依存だったはず。 私の処理系ではintは4バイトだったので、long long intにしておかないとNUL文字を入れる場所がなくなっ