sizeof(char)が必ず1でも、省略すべきではない

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2007/08/19(日) 20:06:26
malloc(sizeof(char)*(strlen(s)+1))
ではなく
malloc(strlen(s)+1)
と書くような糞コードばかり見て育った、
悪しき慣習を引きずった人は引退すべし

0633デフォルトの名無しさん2014/03/12(水) 21:29:45.44ID:SuXZVGvO
確かに痛いな

0634,,・´∀`・,,)っ-○○○2014/03/12(水) 21:45:07.65ID:DWO9DKRE
お前ら知ってる?

for (int i = 0; i < array.size(); i++)



for (int i = 0 * sizeof(char); i * sizeof(char) < array.size() * sizeof (char); i += 1 * sizeof (char))

の省略表現なんだぜ。


整数型をとる関数の返り値でreturn 1; とかやってるのも
実は return 1 * sizeof (char); を省略したものなのだ。
省略が嫌いな人はちゃんと書くように心がけよう。



極論だけど、「省略」という概念を勝手に作り出すというのはこういうことなんだよ。

0635デフォルトの名無しさん2014/03/12(水) 22:12:34.42ID:TlzKm1ZH
ダンゴさん荒ぶってるなw
あなたそんなキャラでしたっけ?w

0636,,・´∀`・,,)っ-○○○2014/03/12(水) 22:17:04.10ID:DWO9DKRE
sizeof(char)を使うべきと主張してる例として出てくるコードが
strdup()の車輪の再発明しかないという現実に絶望したのだ

0637デフォルトの名無しさん2014/03/12(水) 22:33:15.30ID:UhWwNHPB
別にsizeof(char)いいと思うけどなぁ
ほんの少しだけ柔軟
別にめんどいなら1書くしなー
というかこういう話は規約レベルであって個人なら適当でええんでないの

0638デフォルトの名無しさん2014/03/12(水) 22:36:20.03ID:YzPuo2JA
そういうヤカラは
if (isfoo(a) == TRUE)
と書いて満足げだったりするからタチ悪い。

0639,,・´∀`・,,)っ-○○○2014/03/12(水) 23:35:55.62ID:DWO9DKRE
>>637
本来必要の無い冗長な式ととわかった上で「別にいい」というのなら
何も反論はない。好みの問題だからな。
書くべき理由も無いし書いたらダメという理由もない。

書かないことを「省略」という概念で捉えるバカは救いようが無い。
sizeof (char)を掛けるのが害悪なのではなく
言語の基本的な仕様すら正しく理解せずにコードを書く人間が
バグの根源なのだ。

0640デフォルトの名無しさん2014/03/13(木) 11:53:41.67ID:f8T+x/4U
strlen()は引数のアドレスから'\0'のアドレスまでの差分を返す関数だから
>>1のような例の場合には仮にcharが2バイトになろうが4バイトになろうが無意味だな

0641デフォルトの名無しさん2014/03/13(木) 11:55:50.75ID:f8T+x/4U
いや、書くとしたらmalloc(strlen(s)+sizeof(char))か

0642,,・´∀`・,,)っ-○○○2014/03/13(木) 19:16:45.68ID:0x0bjcUd
だからさ何度も言ってることだけど
charが2バイト以上になったらテキストファイルをメモリマッピングして
読み書きしてるプログラムがほぼ全滅するじゃん。

絶対あってはいけないことを仮定し、それに対するなんの解決にもならない
オレオレ解決策を提示するのは野暮だね。

0643デフォルトの名無しさん2014/04/30(水) 04:09:09.95ID:OAq57yR0
名前欄のところにAA使うヤツってイタいのしか居ないのか?

uy
,,・´∀`・,,)っ-○○○

それとも、技術力が低いところと粘着質なところをみると同一人物か?

0644デフォルトの名無しさん2014/04/30(水) 04:34:13.99ID:lAD+rioe
>>643
uyと顔文字だったら技術力は桁違いだぞ。それが読み取れないとしたら、余程読解力が足らないんじゃないか?

0645デフォルトの名無しさん2014/04/30(水) 11:10:13.40ID:4gXDKzV2
ぷろぐらまには観察力も必要
好き・嫌いだけで思考停止する奴は向いてない

0646デフォルトの名無しさん2014/05/01(木) 07:09:41.49ID:J2x9Tr8u
uyってただの基地外じゃなかったっけ

0647デフォルトの名無しさん2014/05/01(木) 20:46:27.40ID:R3+I0L0F
まあコテはだいたいキチガイだからキチガイ認定しておけば九分九厘正しい

0648,,・´∀`・,,)っ-○○○2014/05/06(火) 10:58:51.00ID:WUl6ED2m
>>643←これが技術力低いやつの典型だな

0649デフォルトの名無しさん2014/05/06(火) 19:37:01.38ID:jSMw3g/S
>>648
本当に粘着性だな
それとも成り済ましか?

0650デフォルトの名無しさん2014/10/07(火) 20:43:21.26ID:YpRJBXOl
>>647
コテはただの基地ではない。自意識過剰な基地。

0651デフォルトの名無しさん2014/11/04(火) 04:16:52.73ID:9XcfLbNC

0652デフォルトの名無しさん2016/01/07(木) 12:10:03.61ID:6ZkPklY8
sizeof (*s)だろ
wchar_tにする必要が出た場合にわざわざ書き換えるのか?

0653デフォルトの名無しさん2016/02/01(月) 17:04:11.10ID:fSUYSvsK
charを使うのがそもそも誤り
int8_tを使えばもーまんこたい

0654デフォルトの名無しさん2016/03/29(火) 10:13:01.80ID:/c8bAcK4
サッカーブッシュ日本代表日程ぷあたん(しゅっちょうまいくろ教育長交代)春文執行40代売上差額シュガーチョコ
https://www.youtube.com/watch?v=NDq1QoJY0nY宇ドナルドアナリストパワーストーンコーチングとしまえん
サッカーブッシュ日本代表日程古本屋よしたけしゅっちょうちょこしゅがー
ディーラー税務署天才開発者死亡詰みヨミドクターマイクロサービス不足
サッカーブッシュ日本代表日程ぷあたんシフト光金さかい強制バイト人権侵害問題
春分資源執行ニューヨーク低原価ぼったステーキソルトレイク福岡横浜新橋奴隷課金パチシフト強制バイト問題新潟米センター生残
コスメ24チャリティー隠れ40代生活保護プレイボーイバイトレードいたりあん接待問題
マスコミKARDローンケーオーサービス不足婚活パーティー寄付金執行原発ビジネス
FBIチャイニーズタイホテル売上事務所ガチャ決算ガチャキャンペーン(販売報道陣過激派組織向携帯最新情報提供終了
校長発言細心注意ノートン産廃エラー(著作権クレーム中国反応融資高額教育費)(中国捕鯨団体40代社員サッカーコメント
高額入学金ヤフウ新橋大学ヤフウ新橋理事長FX経費 おじや50代資産ガリバズフィード40代エリート

0655デフォルトの名無しさん2016/03/29(火) 11:54:16.80ID:sTqso8Qe
>>1
もう少し保守性ということを考えたほうがいいな

0656デフォルトの名無しさん2017/11/29(水) 17:36:19.59ID:oYG4N3SV
malloc(sizeof(*s)*(strlen(s)+1))
だな

0657デフォルトの名無しさん2018/05/23(水) 21:10:29.59ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

EVRSR

0658デフォルトの名無しさん2018/07/05(木) 00:46:51.44ID:RfoszcD2
J7V

0659デフォルトの名無しさん2020/02/17(月) 02:59:56.14ID:U44ZlMgK
逆だもんね
sizeof(char)が1として他のsizeofの意味が定義されている

0660デフォルトの名無しさん2021/10/27(水) 09:55:04.07ID:XE3bmMwX
tronコードとかどうすりゃいいんだ?

0661デフォルトの名無しさん2021/11/22(月) 05:30:11.46ID:BgcNaRYw
sizeof char8_t ならok

0662デフォルトの名無しさん2021/11/24(水) 19:05:27.71ID:eedqR6oi
char、intなんて使うな
s8,u8,s16,u16...と定義しておけば移植上の問題も解決しここのchar符号つきだったっけ?などと悩む必要もなくなる

0663デフォルトの名無しさん2021/12/13(月) 17:58:57.46ID:XUqOlt7W
>>662
8bitの型が存在しない環境もあるわけだが
移植の問題はそんな単純じゃない

0664デフォルトの名無しさん2021/12/16(木) 11:50:55.98ID:V9bBAe8M
一文字64ビットだとさすがに無駄すぎるかな?

0665デフォルトの名無しさん2021/12/16(木) 12:48:00.11ID:8g6x2p1S
環境や用途次第

0666デフォルトの名無しさん2021/12/17(金) 21:50:43.52ID:fYBUeFVi
amd64のbcplか

0667デフォルトの名無しさん2021/12/19(日) 12:24:11.57ID:n0pWJPWX
いつのスレだこれw

charが1バイト以外なんてきいたことないんだけど現実にあるのか?
memalloc(tcslen(s)+1)とかc#ならなんてならわかるけど

0668デフォルトの名無しさん2021/12/19(日) 13:02:36.17ID:kpY6TjYd
charが16bitとか
あるねえ

0669デフォルトの名無しさん2021/12/19(日) 13:10:48.61ID:n0pWJPWX
どこであるの?
16ってことはユニコードなんだろうけどstrlenやcharが16で扱われるなら、普通の8bit文字はどういう型や関数になるの?

0670デフォルトの名無しさん2022/01/01(土) 09:05:28.76ID:K6qu+KQY

0671デフォルトの名無しさん2022/01/01(土) 14:55:46.21ID:Je/lt7i4
そいつもcharは1バイトだしsizeof(char)=1だしmallocも誤作動しない
1バイトが16ビットという変態なだけみたいだな

0672デフォルトの名無しさん2022/01/02(日) 10:59:53.48ID:qIxMJbVw
>>670
それ使ってた

0673デフォルトの名無しさん2022/01/02(日) 11:53:10.96ID:qIxMJbVw
通信系で8ビットデータをcharに1バイトずつ入れるか2バイトずつパックして入れるか
の2通りを用意しなきゃならないのが面倒だった

charのサイズよりも
それ意外の特殊な構造の方がよっぽど大変だった

0674デフォルトの名無しさん2022/01/02(日) 11:57:51.30ID:qIxMJbVw
>>671
現代の定義では1バイトは8ビット

0675デフォルトの名無しさん2022/01/02(日) 14:51:37.03ID:zUnM7qZG
1バイトは8ビットかもしれないけど1バイトは16ビットなんだよ
16ビットのintのサイズすら1バイト

https://www.tij.co.jp/jp/lit/ug/spru514w/spru514w.pdf
103ページ
> TMS320C28x Byte is 16 Bits

> Since the TMS320C28x char is 16 bits (to make it separately addressable),
> a byte is also 16 bits.
> size of (int) = = 1 (not 2).

0676デフォルトの名無しさん2022/01/02(日) 16:27:45.69ID:MzGzgg2X
TIがいってるだけで
一般的には1バイトは8bit

0677デフォルトの名無しさん2022/01/02(日) 16:29:30.40ID:MzGzgg2X
C2000を使って開発してた時も当然1バイトは8ビットとして会話してた
そうじゃないと会話が成り立たない

0678デフォルトの名無しさん2022/01/02(日) 16:32:33.63ID:MzGzgg2X
標準ライブラリの関数仕様も○○文字
(○○charactors)と記述する

0679デフォルトの名無しさん2022/01/02(日) 21:29:09.83ID:T/GE+9gk
[迷信] 1バイトは8ビット
https://www.kijineko.co.jp/%e8%bf%b7%e4%bf%a1-1%e3%83%90%e3%82%a4%e3%83%88%e3%81%af8%e3%83%93%e3%83%83%e3%83%88/

2008年にIEC 80000-13:2008で1バイトは8ビットと定義されたのですが、C言語やC++では、その後の規格(C17やC++20など)でも1バイトのビット数は処理系定義のままになっています。

では、C言語やC++における1バイトは実際に何ビットになっているかというと、<limits.h>ヘッダで定義されるCHAR_BITマクロがそれを表しています。CHAR_BITマクロは少なくとも8以上に定義されることが保証されています。すなわち、1バイトが9ビットであったり、16ビットであったり、64ビットであったとしても、規格上は何ら問題ありませんし、そうした処理系が実際に存在します。

0680デフォルトの名無しさん2022/01/02(日) 23:53:16.06ID:MzGzgg2X
一般的には1バイトは8ビット
charのサイズに関わらず

0681デフォルトの名無しさん2022/01/02(日) 23:57:28.41ID:MzGzgg2X
ストレージの容量
メインメモリの容量
データ通信速度
データ通信量
全てこれで統一されている

コンパイラが何であれ

0682デフォルトの名無しさん2022/01/03(月) 03:49:39.60ID:b0ADrG90
そんな一般論は中学生以上ならだれでも知ってるんだよ
そういう一般論でプログラミングして問題起きないのかってスレなんだよ
そして問題ありって具体例が挙げられたというのになぜそんなにかたくなに・・・

0683デフォルトの名無しさん2022/01/03(月) 18:37:03.95ID:CoNaI9+f

■ このスレッドは過去ログ倉庫に格納されています