トップ «前の日記(2015-02-17(Tue)) 最新 次の日記(2015-02-19(Thu))» 編集

屑俺日記

僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。


2015-02-18(Wed) 雨がやんで晴れたが、まだあまり寒くない

三項演算子とか

入力値(の最初の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

三項でfizzbuzz

無駄に複雑になっただけみたい。

#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や内容が変った場合はあしからず。

index.htmlは ここから。