みちこたんのぶろぐさんです

このブログでは、その日ふと思ったことや、わたしの紹介、パソコンのことを投稿していこうと思っています。

【C言語】ゴー●ドブレ●ド

2025-02-05 02:16:30 | パソコン

関数内で、int a[3][3] = {}; と int a[3][3] = {0}; で配列を宣言したときの違いはご存じでしょうか。

どちらも配列aのすべての要素は0で初期化されますが、処理が異なります。

前者はすべての要素を0で初期化しますが、後者は最初の要素を0で初期化したあと残りの要素を0で初期化します。

この違いは、int a[3][3] = {6, 7}; と宣言してみるとよくわかると思います。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

【Ubuntu】WindowsとUbuntuを何も考えずにデュアルブートにすると

2025-01-06 20:01:15 | パソコン

WindowsとUbuntuを何も考えずにデュアルブートにすると、Ubuntuを起動した後にWindowsを起動したときに、Windowsの時刻のみ正しく表示されなくなります。

この状態で、WSLgのUbuntuでaptコマンドを使って更新を確認すると次のようなエラーが表示されることがあると思います。

$ sudo apt update
ヒット:1 https://packages.microsoft.com/ubuntu/20.04/prod focal InRelease
ヒット:2 http://archive.ubuntu.com/ubuntu focal InRelease
取得:3 http://security.ubuntu.com/ubuntu focal-security InRelease [128 kB]
ヒット:4 https://repo.radeon.com/amdgpu/5.6/ubuntu focal InRelease
ヒット:5 https://repo.radeon.com/rocm/apt/5.6 focal InRelease
取得:6 http://archive.ubuntu.com/ubuntu focal-updates InRelease [128 kB]
取得:7 http://archive.ubuntu.com/ubuntu focal-backports InRelease [128 kB]
パッケージリストを読み込んでいます... 完了
E: Release file for http://security.ubuntu.com/ubuntu/dists/focal-security/InRelease is not valid yet (invalid for another 5時間 3分 37秒). Updates for this repository will not be applied.
E: Release file for http://archive.ubuntu.com/ubuntu/dists/focal-updates/InRelease is not valid yet (invalid for another 7時間 48分 28秒). Updates for this repository will not be applied.
E: Release file for http://archive.ubuntu.com/ubuntu/dists/focal-backports/InRelease is not valid yet (invalid for another 5時間 10分 41秒). Updates for this repository will not be applied.

これを解決するには、Windowsの時刻を修正する必要があります。

でも、Ubuntuを起動するたびにWindowsの時刻を修正するのは嫌ですよね。そんな時は、Ubuntuで一度だけ(でいいので)次のコマンドを実行します。

$ sudo timedatectl set-local-rtc true

これで、WindowsとUbuntuのデュアルブートが快適になります。

いまだに20.04 LTSを使ってる私。早く24.04 LTSにしませんと。

※RTCをローカルタイムゾーンにすると、タイムゾーン変更や夏時間調整で問題が起きちゃいます。その時は、次のコマンドを実行してみてください。

$ sudo timedatectl set-local-rtc false

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

違和感がありますね。

2024-10-05 05:32:28 | パソコン

C言語では、ループ内の処理等が1つの文で済む場合には {} を省略することができますし、特にforループの場合、文がない場合(for文だけで完結する場合)には ; だけにできます。

do whileでも同じなのですが…

do
    points += 1 + ++days / 7;
while (points < target);

違和感がありますね。

{} はifやforでよく使いますが、必ず使わなければいけないものではありません。文が1つ以下の場合には省略できます。{} はブロックといい、複数の文を一つにまとめるときに使います。詳細はここでは省略しますね。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする