僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
入力値(の最初の1バイト)を比較するくらい。
一部よくわからないが、cc -Weverything は文句を
言わなかった。
#include<stdio.h> #define INPUT_SIZE 2 #define COMP_CHAR '3' int main() { char input_num; printf("Input an ASCII Charactor.\n"); fgets(&input_num, INPUT_SIZE, stdin); printf("%c\n", input_num); input_num == COMP_CHAR ? printf("OK\n") : printf("NG\n"); return 0; }
$ ./two_expr Input an ASCII Charactor. a a NG $ ./two_expr Input an ASCII Charactor. 3 3 OK $ ./two_expr Input an ASCII Charactor. 35 3 OK
無駄に複雑になっただけみたい。
#include<stdio.h> #define FIZZ 3 #define BUZZ 5 #define FIRST 1 #define LAST 100 int only_num(int num); int ret0(void); int only_num(int num) { if ((num % 3) && (num % 5)) return 1 ; else return 0; } int ret0(void) { return 0; } int main() { int fz; for (fz = FIRST; fz <= LAST; fz++){ ! (fz % FIZZ) ? printf("fizz") : ret0() ; ! (fz % BUZZ) ? printf("buzz") : ret0() ; only_num(fz) ? printf("%d", fz) : ret0() ; printf("\n"); } return 0; }
論理否定演算子(!)は、剰余(%)より優先順位が上らしい。
三項演算子の : の後には何もないと駄目みたい。
何もしない既成の式が思い浮かばず、int ret0()
あと、gccとは違い、clang は main 関数で return を明示しなくても
特に警告は出さないようだ。
なることを確認。
#include<stdio.h> int main() { int num = 10, r_num; char cha = 'A', r_cha; r_num = ! num; r_cha = ! cha; printf("%d %d\n", num, r_num); printf("%c %c\n", cha, r_cha); return 0; }
$ ./exp 10 0 A
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。