[an error occurred while processing this directive]
[an error occurred while processing this directive]
struct s {
int r: 5;
int g: 6;
int b: 5;
};
int A[4] = {0,1,2,3};
カッコはperlだと(0,1,2,3)のように丸カッコだった気がする。まぎらわしい。
int main(){
int i = 0;
....
for(i = 0; i > SIZE; i++){
int j;
....
実は最近まで「関数の先頭で宣言、初期化はできない」と勘違いしてました。
char *str = "Hello, world";この場合、strには改行コードも入ってます。 改行コードを入れない文字列は
char *str = "Hello,\ world";としましょう。こうするとコンパイラの警告も出なくなってちょっとすっきり。
scanf("%lf", &d);
printfしたいときは
printf("%f");
Error: attempt to .org backwards ignoredが出た時は、メモリの使い過ぎを疑いましょう。int A[10000][10000]なんて配列を確保しようとしてたらアウトです。
killedって出てプログラムが止まってしまう場合は、unlimitコマンドでメモリの制限を緩くすることで実行できる場合があります。
5 % 4 = 1 -1 % 4 = -1 -5 % 4 = -1
int compare(const void *v0, const void *v1){
return (*(int*)v0 > *(int*)v1) ? 1 : (*(int*)v0 == *(int*)v1) ? 0 : -1;
}
...
qsort(A, size, sizeof(int), compare);
比較が面倒です。下のように書いてもいい
int compare(const int *i, int void *j){
return (*i > *j) ? 1 : (*i == *j) ? 0 : -1;
}
...
qsort(A, size, sizeof(int), (int(*)(const void*, const void*))compare);
関数のキャスト。こっちのがきれいか。
for(i = 0, j = size - 1; i < j; i++, j--){
char c = buf[i];
buf[i] = buf[j];
buf[j] = c;
}