s = "" + i;でintをStringに変換するのはなぜだめか

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2010/08/02(月) 23:30:13
2010/09/04(土) 00:20:10
perlって糞だな
まで読んだ
2010/09/04(土) 02:46:55
7のように見えて
7のように鳴けば、
それは7なんだよ。
2010/09/04(土) 07:18:01
"7" = 7 は、UNIXの文化。
2010/09/04(土) 07:42:43
>>211

"7"が7番地にあったんだろ
2010/09/04(土) 12:17:52
馬鹿多いな。
だから、"7"と7の間の比較法に曖昧さがなければ別に何も問題はない。
逆に聞くがどこか曖昧なところがあるのかよ。

多分若い奴が多いんだろうと想像するけど、80代のジジイみたいな硬直した
思考しかできない奴多いよな。
2010/09/04(土) 12:30:45
たしかに、"7"と7では曖昧さがないように見える。

だが文字と数値を比べるということは
それは文法的には"0"と0を比べることも可能ということになるんだよ。

"0"は文字という実体がある。だから真
0は何もないという意味。だから偽

違うものなのにイコールになる。
どう考えても曖昧だろ。
2010/09/04(土) 12:33:57
>0は何もないという意味
君プログラマ?w
2010/09/04(土) 12:40:36
0は偽という点には反論しないのかw

お前は、どうでも良い揚げ足鳥にしか見えんのだが。
鳥なら鳥らしく飛んでみろよ。がけの上からな
2010/09/04(土) 12:47:12
言語による

Perlでは"0"は偽扱い
JavaScriptでは"0"は真扱い
2010/09/04(土) 12:53:02
揚げ足取りとか本気で言ってるなら大馬鹿だな。
とりあえず今の話題と「偽は0である」には何の関係もない。
言ってることが意味不明すぎる。

普通のプログラマなら、"7" == 7のような比較を許す言語では、
演算子==は2つのオペランドの型を揃えてから(要するに片方の値をもう片方の型に
暗黙的に変換してから)比較を行うんだろうと想像するだろう。

"7" == 7の場合は、恐らく"7"の方を整数に変換するルールを採用するんだろうね。
で、その方法にどこか曖昧さがあるのかよって。

まあ、あえて問題点も一つ指摘しとくけど、数値の文字列表現に桁区切りとか小数点が
入ってる場合は、そのルールが国や地域によって違うから問題がないわけじゃない。
2010/09/04(土) 12:59:04
>>221


> Perlでは"0"は偽扱い
> JavaScriptでは"0"は真扱い
2010/09/04(土) 13:01:18
なにが「つ」だ。
意味不明。ちゃんとした文章書け
2010/09/04(土) 13:02:56
a="0"
b=0

if a==b
 どっち?
else
 どっち?
end

曖昧だろ。
2010/09/04(土) 13:07:43
どこが曖昧なのかサッパリ理解できん。

仮に"0"が「特定の文脈において」bool値として扱われる言語があるとして、
それは「いつでも」そうであるということを意味しなければならない必然性はどこにもないはずだが...

本当に80代のジジイの思考力だな>>224
2010/09/04(土) 13:08:48
言語によって違うのを統一してほしいわ。
一つの言語しかやらない似非技術者はそれでいいんだろうけど。

文法が違うだけならまだ許せるが
同じ書き方をして、答えが違うのは
混乱の元。
2010/09/04(土) 13:09:53
>>225
お前は、一つの言語のルールさえ
覚えればいいから、それでいいんだろうさ。
2010/09/04(土) 14:22:27
C/C++での"0"は0\0と並んだ文字型配列へのポインタ
まあおすすめはしないがintとの比較も可能だろ。
2010/09/04(土) 14:26:23
"↑で?"
2010/09/04(土) 14:41:25
Cの場合
7 は 7
'7' は 0x37
"7" はポインタ
2010/09/05(日) 13:33:15
char ch = *("0123456789" + i);
2010/09/05(日) 14:03:02
char ch = "0123456789"[7];
2010/09/05(日) 14:12:37
2010/09/05(日) 17:27:09
>>227
君は同じ(ような)ルールの言語をいくつ覚える必要があるの?
2010/09/05(日) 17:28:09
char ch = 7["0123456789"];
2010/09/06(月) 04:10:21
>>234
言語の数だけ覚えるべきだろ。
元々コンピュータにあるのは数値だけだ。
型なんてものは元々存在しないのだから、型ってのは言語の都合でしかない。
そして言語の都合でしかないのだから、言語によって意味が違うのは当然のこと。
それを何か1つの言語の都合で統一したら他の言語が割を食う。
2010/09/06(月) 04:40:21
RubyなんてRails入れたら言語のルール変わるんだぜ
2010/09/06(月) 07:12:26
型=変数のサイズならハードレベルで存在するぞ
2010/09/06(月) 07:33:00
>>238
問題は、「型=変数」って前提に合意が得られるかだな
2010/09/06(月) 08:06:12
>239
たぶん>238は「型=変数のサイズ」って区切るんだと思うよ
2010/09/06(月) 09:41:11
つまり long と double は同じ型だったりするんですね
わかります
2010/09/06(月) 09:50:28
>238が言ってるハードレベルの差ってのはレジスタとかのことだろ
整数レジスタと浮動小数レジスタは別に決まってるだろうが
そんなことも説明されなきゃわからんのか
2010/09/06(月) 19:48:45
>>242
馬鹿だろあんた
2010/09/06(月) 19:58:54
Cなら変数の型とレジスタの種類が直結してるかもしれんが

高級な言語はもっと複雑な内部構造してるだろ。
JAVAなんか全部クラスだし。
2010/09/06(月) 21:58:41
longとdoubleは長さが違うだろ
2010/09/06(月) 22:04:34
>>244
ちがうだろ。
247239
垢版 |
2010/09/06(月) 23:36:47
>>240
うん、俺もそこだと思ったけど、カッコの位置間違えた。
2010/09/07(火) 17:40:25
Javaってさ
OO言語とか言われてるけど
結局のところ
Cからポインタ使えなくして
ガベコレ付けて
ぬるぽ例外出るようにしただけの
箱庭低級言語なんだよね
2010/09/07(火) 17:55:18
>>248
・デフォでvirtual関数
・インタフェースの構文がある
・実装の多重継承を禁じた

C++に比べりゃだいぶ積極的だろ。OOPLとして。
2010/09/07(火) 18:04:59
C++とは比べてないだろ
2010/09/07(火) 19:57:47
>>248の考える高級なOOP言語って、LLのことだったりして。
2010/09/07(火) 22:00:32
>>248
ポインタ無いのに低級とかww
2010/09/07(火) 22:31:50
Javaにポインタないってw
ないならなんでぬるぽなんてエラーメッセージが出るのかね
2010/09/07(火) 22:37:50
ここで言ってる「ポインタ」って演算可能なメモリ番地(のようなモノ)のことだろ?
2010/09/07(火) 23:02:30
ポインタ無くしてガベコレまで付けたのにヌルポ出る言語って
2010/09/07(火) 23:18:14
馬鹿か。
無くしたのは「ポインタ演算」であってポインタそのものではない。
2010/09/08(水) 07:23:33
ぬるぽが出ることの何が悪いのかよくわからん
javaが例外投げすぎなところはあると思うがぬるぽは全然問題無いだろ
2010/09/08(水) 07:38:49
>>257
あんた読解力がないって言われるだろ。
2010/09/08(水) 09:43:00
NULLpointerExceptionが出ることが悪いとはだれも言ってないな
2010/09/08(水) 13:44:58
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/ ←>>253
 (_フ彡        /

  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/ ←>>255
 (_フ彡        /

  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/ ←>>257
 (_フ彡        /


2010/09/09(木) 23:07:51
ぬるりひょん
2010/09/10(金) 21:08:02
>>238
>>236は「元々コンピュータにあるのは数値だけ」に対して「型は言語の都合」としてるんだ。
文字列型とかリスト型とか、そういう根本的に違う構造の型の話だろ。
2010/09/10(金) 21:28:12
まーC言語の組み込み型は長さの違いだけかなあ
2010/09/10(金) 22:56:11
まるで成長していない・・・
2010/09/10(金) 23:01:53
やっぱ、使わなきゃ成長しないよ
2010/09/10(金) 23:39:27
>1
これJavaの文法?
腐ってるね
2010/09/11(土) 00:51:13
>>266
Javaぐらい覚えろ。
2010/09/11(土) 01:38:00
>>266
s = Integer.toString(i);
も相当痛いよね
2010/09/11(土) 17:10:33
>164
金融計算の場合、誤差がないことを求められるんじゃなくて決められた丸め方(誤差の出し方)を守ることを求められてたような。
2010/09/11(土) 17:15:59
>169
> 一つは、恐らくビデオ回路の発振器の発振精度なんて恐らくそんな高くないから意味がない。
基準となるタイミング信号を用意して、全員それに合わせる方法で解決してる。
GenLockってのがそれ。

> フレームの間隔を1/60secで計算して生成した画像と、1001/60,000secで計算して生成した画像の差なんて、人間にはわからないw
1フレームでは分からないが、それが1時間とかあると3秒の差になったりする。
大した差じゃないと放置すると音や字幕がずれるので、全ての番組が終盤にいっこくどうに。
(実際にはこれも音声とビデオの周波数差を緻密に制御することで解決している)
2010/09/11(土) 17:43:31
>>269
かならず銀行が儲かるように四捨五入するんですねわかります
2010/09/11(土) 19:12:24
>>164
部下(下っ端)のせいにしてるけど、正しくは
丸め誤差を守るというのが顧客の要求仕様であるにもかかわらず、
プロジェクト計画段階で固定小数点の扱える金融計算ライブラリの導入を
決定する判断ができなかった上司(>>164)に原因がある

プロジェクトの問題を何でもメンバ(部下)のせいにするリーダ(上司)が多いのは現実だけど、
その大半の原因は部下ではなく、実はリーダの技術管理能力の問題にあった、というのは
よく知られた事実だったりする
2010/09/11(土) 19:14:24
技術に疎いから
「固定小数点の扱える金融計算ライブラリ」がなにであるか、
普通の型にはどんな問題があるか知らない。
2010/09/11(土) 20:18:22
>>270
>1フレームでは分からないが、それが1時間とかあると3秒の差になったりする。
>大した差じゃないと放置すると音や字幕がずれるので、全ての番組が終盤にいっこくどうに。
>(実際にはこれも音声とビデオの周波数差を緻密に制御することで解決している)

俺が言っているのはプログラム上の時刻と実時間との差。
君が言っているのは、映像と音声の同期の問題。
緻密に制御?何いってんの。

タイマ等を使って同じタイミングで数秒分の映像と音声のデータをそれぞれの
バッファにぶち込む、という誰でも思いつく方法でそんなものは実現できる。
2010/09/12(日) 10:04:27
なんか誤読で熱くなってないか
2010/09/24(金) 01:07:45
医療業界だと丸めはまた違うからな。
五捨五超入とか。
うちは自社開発だけど、ライブラリ売ってるのかな。
2010/09/24(金) 02:54:10
祝イチロー200本
2011/02/18(金) 09:26:06
>>46
Tcl辺りだとどうなのかな?
2011/02/18(金) 09:35:10
結局の所、タブルクオートと評価器の関係じゃないの?
シングルだと生だけど、ダブルは評価ありだからどのレベルまでやるかという話のような?
2011/07/06(水) 06:32:27.76
>>272
> プロジェクトの問題を何でもメンバ(部下)のせいにするリーダ(上司)が多いのは現実だけど、
ハッァァァァァァァアアァァアァァ????????????????????
2011/11/11(金) 17:53:19.71
というか一般論として、コンパイラの最適化を妨げるような真似しちゃ駄目
2011/11/28(月) 01:27:51.19
>274
> タイマ等を使って同じタイミングで数秒分の映像と音声のデータをそれぞれのバッファにぶち込む、という誰でも思いつく方法でそんなものは実現できる

概要を思いつけるのと実現できるのは全く別の話なんだけど。

そのタイマのタイミング(クロック周波数)を送信元と同じように作る必要がある。
たとえばGS4911Bってデバイスが実現してるのがそれ。
2011/12/18(日) 01:13:00.70
>>270
何をしたいのか解からん。
普通ストリームデータには、このコマは、何秒時点に表示するって情報があって、
動画再生する側は、その時間に間に合えばそのコマを表示する。間に合わなければ、
そのコマは捨てる。だから時間の累積誤差なんて起きん。
2012/01/09(月) 22:09:21.74
>>107は馬鹿だな、まで読んだ
2012/08/06(月) 11:07:18.71
逆に
s = "1" + "2";
見たいにした時にsは"12”になるべきなのか
"3”になるべきなのか
286デフォルトの名無しさん
垢版 |
2012/11/10(土) 11:56:18.16
12
2012/11/11(日) 05:10:08.11
ここは間を取って7.5にしよう
2012/11/12(月) 10:24:42.13
間を取るなら6だろう。JK

と言う冗談はさておき、"1" + "2"が"3"になるのは勘弁して欲しいな。
2012/11/12(月) 10:53:41.33
Ruby だと "1" . "2" が
1.2 じゃなくて "12" なんだぜ
290デフォルトの名無しさん
垢版 |
2012/11/12(月) 21:47:19.05
>>289
Perlの間違いじゃね?
2012/11/15(木) 20:14:25.65
sは
"12”になるべきなのか
"
3” ←ただのノイズ
になるべきなのか

ずいぶん長くなってしまうな
2012/11/20(火) 14:50:20.98
どう解釈されるかいちいち人間様が意識しないといけない時点で本末転倒
本来は人間様が楽するためにあるはずなのに
2013/01/29(火) 09:52:53.80
人によって解釈の仕方が違うから統一しとかないとだめだからだろう
2013/10/19(土) 20:14:58.47
>>293
世界征服の方が早そうだな
2013/10/30(水) 09:30:42.97
Magic quotesはオフにしよう
http://codezine.jp/article/detail/2480?p=2

 本題からは外れますが、特別な理由がない限り、SQL文はプリペアードステートメントを使って実行するようにしてください。
これはSQLインジェクション攻撃に対する最も基本的な対策です。基本的なことにも関わらず、プリペアードステートメントが
あまり使われていないのには以下のような理由があるのではないかと、筆者は推測しています。

SQLを文字列で作って実行するという直観的にわかりやすい方法が入門書等で紹介される。
初心者がそれをそのまま真似る。
SQLインジェクション攻撃に対して脆弱なウェブアプリが量産される。
PHPの開発者が「Magic quotes」というマジックを導入する。Magic quotesによって、ブラウザから送られた「O'Reilly」という文字列は、自動的に「O\'Reilly」に変換されようになる(脆弱性回避)。
この「O\'Reilly」という文字列は、プリペアードステートメントでは使えない(余計なバックスラッシュが入ってしまう)。
プリペアードステートメントは使われなくなる。

 データを勝手に書き換えてしまうMagic quotesがデフォルトで有効になっているのは困ったことです。
PHPをインストールしたら、設定ファイル(php.ini)を探して、「magic_quotes_gpc = Off」としておきましょう。
296デフォルトの名無しさん
垢版 |
2014/11/09(日) 04:17:33.67ID:iOEsToOb
>>293
その辺りはだいたいノリでやればいいんだよ。
嫌ならガチガチのC言語使ってろハゲ。
2014/11/09(日) 07:30:26.87ID:dOd/7vBB
>>296
C なんかユルユルだろ
ガチガチってのはこういうことだ

# 1 + 1.5;;
Error: This expression has type float but an expression was expected of type int
# float_of_int 1 +. 1.5;;
- : float = 2.5
2014/11/09(日) 07:52:49.16ID:5CcElDxt
1 + 1.5 -> 2
1.5 + 1 -> 2.5
が一番納得が行く
2014/11/09(日) 08:43:44.19ID:dOd/7vBB
>>298
"1" + 1.5 -> "11.5"
1.5 + "1" -> 2.5

だったら納得が行く?

という具合にこの辺考え出すと難しい問題なので、迂闊に他言語をdisるとブーメラン必至
2014/11/09(日) 08:44:28.80ID:dOd/7vBB
最後の一行は>>298にではなく一般論として。
2014/11/09(日) 11:24:40.10ID:QMG6pfcl
>>299
上はあり得ないな
下はエラーになってくれ
302デフォルトの名無しさん
垢版 |
2014/12/03(水) 08:02:12.39ID:3JSuoVx9
var s = '' + n + m;
これでハマったわ
2014/12/03(水) 22:34:40.13ID:fPpGIPtv
var s = n + m + '';
304デフォルトの名無しさん
垢版 |
2014/12/05(金) 11:31:37.25ID:S74tDLHo
2014/12/19(金) 20:36:16.82ID:3367BXhr
+が演算子として定義されていてオーバーロードされたかもしれないし
=がletなのかequalなのかで結果が違う
どの言語でどのような処理系ですか?で問題ないかも知れないしダメなのかも知れない
以上
306デフォルトの名無しさん
垢版 |
2015/02/27(金) 21:01:16.42ID:QBCyKoap
typescriptだと
1 + ""
はコンパイルエラーにならんけど
"3" - 0
はコンパイルエラーになるな
Number("3")つかえという事か
Number.isNaN
307デフォルトの名無しさん
垢版 |
2015/02/28(土) 02:47:14.00ID:6Lhyreb3
JSでは
Number("3")
とするのであれば
+"3"
とした方がJSらしくていいと思う
308デフォルトの名無しさん
垢版 |
2015/02/28(土) 10:52:24.78ID:GKwojgPY
OOPLなのに+で文字列結合とか無いわー。
集合型と互換性なくなるじゃん。

"集合型と文字列型が互換性を持っているSmalltalkの例"
| value |

"加算"
value := #( 1 2 ) + 1. "-> #( 2 3 )"
value := 'AB' + ( $a - $A ). "-> ab"

"結合"
value := #( 1 2 ) , #( 3 ). "-> #( 1
2 3 )"
value := 'example', 10 printString. "-> example10"

"備考:書式付き文字列結合"
value := 'example%1' % { 10 }. "-> example10"
309デフォルトの名無しさん
垢版 |
2015/08/01(土) 11:31:27.94ID:xbBMMZyR
ロケールによって小数点が.だったり,だったりするからナア
それが目的ならいいけど、"" + i だとわかってないように見える
2015/12/01(火) 09:27:15.15ID:m5SsaW1T
s = "" + i;
この書き方Javaの場合はコンパイル時に最適化されるって聞いたけど。
311デフォルトの名無しさん
垢版 |
2016/01/08(金) 22:22:54.98ID:gaIg35ga
もう全部えらーにしてしまえ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況