元号と元号の or をとってみた。
// // https://github.com/peanutsjamjam/c_study/blob/master/reiwa_or/main.cpp] // #include <cstdio> char *str_or(char *s, const char *s1, const char *s2) { for (int i=0; i<7; i++) s[i] = s1[i] | s2[i]; return s; } char *str_and(char *s, const char *s1, const char *s2) { for (int i=0; i<7; i++) s[i] = s1[i] & s2[i]; return s; } int main(int argc, char **argv) { char nengou[][7] = { "明治", "大正", "昭和", "平成", "令和"}; char str[7]; printf("二つの年号を or 。\n"); for (int i1=0; i1<4; i1++) { for (int i2=i1+1; i2<5; i2++) { printf("%s | %s = %s\n", nengou[i1], nengou[i2], str_or(str, nengou[i1], nengou[i2])); } } printf("\n二つの年号を and 。\n"); for (int i1=0; i1<4; i1++) { for (int i2=i1+1; i2<5; i2++) { printf("%s & %s = %s\n", nengou[i1], nengou[i2], str_and(str, nengou[i1], nengou[i2])); } } return 0; }
漢字が utf8 だと1文字3バイトであることに依存してます。
実行結果。
二つの年号を or 。 明治 | 大正 = 缯濻 明治 | 昭和 = 是粿 明治 | 平成 = 繿溻 明治 | 令和 = 滮粿 大正 | 昭和 = 缯翯 大正 | 平成 = 彷歳 大正 | 令和 = 忧翯 昭和 | 平成 = 繿皜 昭和 | 令和 = 滭和 平成 | 令和 = 廷皜 二つの年号を and 。 明治 & 大正 = 䀆栣 明治 & 昭和 = 昌䒈 明治 & 平成 = 䘂怐 明治 & 令和 = 䘄䒈 大正 & 昭和 = 䀥䀀 大正 & 平成 = 堣戀 大正 & 令和 = 䠤䀀 昭和 & 平成 = 䘡䀀 昭和 & 令和 = 䘤和 平成 & 令和 = 习䀀
読める漢字がなかった。