基本演算
#include <stdio.h> /* ブロックコメント */ // 行コメント int main(){ // 和 printf("%d + %d = %d\n", 7, 3, 7+3); // 差 printf("%d - %d = %d\n", 7, 3, 7-3); // 積 printf("%d * %d = %d\n", 7, 3, 7*3); // 整数の商 printf("%d / %d = %d\n", 7, 3, 7/3); // 剰余 printf("%d mod %d = %d\n", 7, 3, 7%3); // 実数の商 printf("%f / %f = %f\n", 7.0, 3.0 , 7.0/3.0); // ( )は通常の計算と同じように使う。 printf("(%d + %d) * %d = %d\n", 7, 3, 2, (7+3)*2); printf("%d + %d * %d = %d\n", 7, 3, 2, 7 + 3 *2); }
7 + 3 = 10 7 - 3 = 4 7 * 3 = 21 7 / 3 = 2 7 mod 3 = 1 7.000000 / 3.000000 = 2.333333
c で使えるコメント。
/* */
ブロックコメント。
//
行コメント。新しめ。
変数
#include <stdio.h> int main(){ // 変数宣言: 型 変数名; int 整数 int a; // 代入 a = 8; printf("変数 a に %d を代入。\n", a); // 変数宣言と代入を一括で行う。変数の初期化。 int b = 4; printf("変数 b に %d を代入。\n", b); // 型が同じであれば、複数の変数宣言を一括で行える。 int sum, dif; // 型の異なる変数の宣言。 double 実数 double avg; sum = a + b; dif = a - b; // 型を自動的に変換 int -> double avg = sum / 2.0; printf("a + b = %d\n", sum); printf("a - b = %d\n", dif); printf("aとbの平均: %f\n", avg); // 変数へ別の値を代入。 a = 12; printf("変数 a に %d を代入。\n", a); printf("a + b = %d\n", a + b); printf("a - b = %d\n", a - b); }
変数 a に 8 を代入。 変数 b に 4 を代入。 a + b = 12 a - b = 4 aとbの平均: 6.000000 変数 a に 12 を代入。 a + b = 16 a - b = 8 (7 + 3) * 2 = 20 7 + 3 * 2 = 13
変数宣言の場所
コンパイラによっては、{}
内の先頭で変数を宣言しなければならないときがある。
代入演算子
#include <stdio.h> int main(){ int a_1 = 2, b_1 = 2, c_1 = 2, d_1 = 2; a_1 = a_1 + 2; b_1 = b_1 - 2; c_1 = c_1 * 2; d_1 = d_1 / 2; printf("%d, %d, %d, %d\n", a_1, b_1, c_1, d_1); // 代入演算 int a_2 = 2, b_2 = 2, c_2 = 2, d_2 = 2; a_2 += 2; b_2 -= 2; c_2 *= 2; d_2 /= 2; printf("%d, %d, %d, %d\n", a_2, b_2, c_2, d_2); }
4, 0, 4, 1 4, 0, 4, 1
暗黙的な型変換と明示的な型変換
型変換(かたへんかん、英: type conversion)とはプログラムにおいて、あるデータ型を他のデータ型に変換することである[1]。型キャスト(英: type casting)とも呼ばれる[2]。
出典: フリー百科事典『ウィキペディア(Wikipedia)』
#include <stdio.h> int main(){ int i, i_assigned_from_d, i_cast_from_d; double d, d_assigned_from_i, d_cast_from_i; i = 3; d = 3.14; // cast せずに代入 -> 切り捨てが発生するので warning i_assigned_from_d = d; printf("%d\n", i_assigned_from_d); // cast i_cast_from_d = (int) d; printf("%d\n", i_cast_from_d); // cast せずに代入 -> warning は特になし。 d_assigned_from_i = i; printf("%f\n", d_assigned_from_i); // cast d_cast_from_i = (double) i; printf("%f\n", d_cast_from_i); }
sample.c: In function ‘main’: sample.c:11:25: warning: conversion from ‘double’ to ‘int’ may change value [-Wfloat-conversion] 11 | i_assigned_from_d = d; |
3 3 3.000000 3.000000