C言語なら俺に聞け 140 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 6f8c-8ulf)
垢版 |
2017/05/11(木) 22:20:03.99ID:cn414UR90
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/


http://echo.2ch.net/test/read.cgi/tech/1487757355/
http://www.geocities.jp/c_cpp_cs/about_c/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2017/06/05(月) 01:20:59.03ID:/8LBEV6v0
おいQZ自演しないでゴミコードを晒せよ
2017/06/05(月) 04:45:59.05ID:/8LBEV6v0
QZって無知を指摘されるとすぐ自演でかき消すよな
お前もう気持ち悪いだけだから消えろよム板から
2017/06/05(月) 04:49:01.59ID:/8LBEV6v0
おいQZゴミ煽りはもうやめろ
おまえはさっさとウンコードマニア殿堂入り級のゴミコードを貼ってろよ
2017/06/05(月) 04:50:02.91ID:/8LBEV6v0
過去にすがるだけのゴミ無職がご高説垂れるなよ無職が
2017/06/05(月) 16:44:47.93ID:bGR3O5j30
おまえのゴミコードじゃ何も語れないから
2017/06/05(月) 16:51:56.25ID:9PUOi1A/0
>>367
resultはボーランドが始めた方言だろ
387デフォルトの名無しさん (ワッチョイ 25aa-YsH8)
垢版 |
2017/06/05(月) 23:06:28.96ID:s9HDUBeH0
お前ら書いたプログラムをaddressSantizerやThreadSantizer、valgrindとかでチェックしながらテスト実行してる?
2017/06/05(月) 23:45:19.00ID:agBnyIwY0
Cで書かれたプログラムがどのように機械語に翻訳され実行されるのかについて書いてある資料ってありませんか?
C言語の書き方的なWebサイトや本は腐るほどありますがCのコースコードがコンパイルされリンクされ実行可能なバイナリが出来上がり
そのバイナリ(必要なら関連する動的リンクライブラリも)がメモリにロードされ実行される過程をある程度詳しく解説している物はまず見かけません
この過程で良く使用されるファイルフォーマットの情報も欲しいです
当然実行環境や開発環境によって差異はあると思いますが基本的なところは変わらないはずですよね?
今のところターゲットはWindowsのPEと組み込み向けのバイナリファイル(メモリイメージ)で、開発環境はひとまずVC++とGNU系を考えています

最近C/C++を本格的に使わざるを得なくなり調べているのですがこのへんの情報が得られずに悩んでいます

スレ違いだったらすみません
2017/06/06(火) 01:06:07.57ID:uiQBRp2m0
コンパイラの実装がどうなってるかを知りたいのか、
それとも機械語がどう実行されているのかを知りたいのか

後者ならアセンブリ言語を勉強すればいい気がする
参考書も探せばありそう
2017/06/06(火) 01:20:44.75ID:aIR29BXyM
>>388
本読むのが一番
おすすめは、コンピュータの構成と設計、パターソン他著
2017/06/06(火) 01:48:28.43ID:MUdbHmDP0
x86ならアセンブルソース出すオプションあるだろ
2017/06/06(火) 01:50:16.07ID:MUdbHmDP0
GNUだとx64もあるのかな?
まだやったことないや
2017/06/06(火) 03:59:12.40ID:hzSn699I0
QZはうざいから黙ってて
2017/06/06(火) 07:16:30.22ID:rRaTvlwzM
>>388
> 最近C/C++を本格的に使わざるを得なくなり調べているのですがこのへんの情報が得られずに悩んでいます
使うだけならそんな情報は要らんだろ
ネタでないならもっとピンポイントで聞かないと本読めと言うような回答しか返しようがない
2017/06/06(火) 07:48:32.18ID:Q6prYP2u0
LLVM 言語マニュアル(Language Reference Manual) 日本語訳

http://www.h3.dion.ne.jp/~mu-ra/llvm/LangRefJ.html
2017/06/06(火) 10:44:02.61ID:euIMzFdw0
>>388
デバッガーの使い方かアセンブリ言語を調べたらいいんじゃない?
「C言語をアセンブリ言語に翻訳してどうやってコンピュータを動かすか見てみよう」
っていう企画はネットや紙面でたまに見かける

gccならオプションでアセンブリ言語を出力できたはず
2017/06/06(火) 12:13:04.78ID:HfSY3J2pa
>>388
「ハロー"Hello, World"」っていう本が面白い
linuxでの話だがシステムコール呼び出しやmain関数の前に行われる処理、共有ライブラリの仕組み、elfフォーマットなどCプログラミングの裏にあるものについて詳しく書かれてる

まあ他の人も言ってるように普通にプログラミングするのにそんな情報は当分いらないけどな
2017/06/06(火) 20:27:56.37ID:MUdbHmDP0
デバッグやリバーs
2017/06/06(火) 20:33:35.53ID:5Y/t1Obrr
レスありがとうございます

C/C++コンパイラに与える物に関する情報は沢山あるのですが、その先で何をやっているかについて解説されている資料は一気に減る気がします
リンカについて解説されている資料もあまり見ませんし、ほとんどはリンカはコンパイラが勝手に呼び出す物とされているように思います
今のところやりたいのはAPIフックやラッパーDLLなどを利用した既成アプリケーションへの介入と、組み込み系のアセンブラとCを混合した開発です
後者の場合は純正の開発ツールを使う場合に限りそれなりの資料がありますがgccなどで開発する場合の情報は多くない上に錯綜していたりします

>>389
昔組み込み系のソフトウェアをアセンブラで書いたことがあるのでアセンブラは多少読めますがCとの繋がりが見えてきません
アセンブラは違っていなければ何でもOKな所があるというか、特に生で動かす場合はレジスタの使い方からコードの配置やジャンプの方法まで
好きに決められますけど、Cだとその辺は全てブラックボックスですよね

>>391,396
アセンブルリストを出せるのは知っていますが出てきたコードはそのまま実行出来る物ではないですよね?たとえば別のソースコードの関数を
呼ぶようなケースでは呼び出し元が呼び出し先のアドレスを把握できていないと動かないはずです

>>397
おぉ、探していた物一つはまさにそんな感じの情報です。Windows向けのがあれば理想的でしたがその本を探してみます
2017/06/06(火) 20:38:47.84ID:xjZg+i4X0
Advanced windows かの?
2017/06/06(火) 21:05:10.62ID:i8rk4NdIM
知りたいことは言語じゃなくてOSの仕様なのに
言語の延長だと思い込んでるから情報にたどり着けないんだろう
2017/06/06(火) 21:18:01.76ID:vqgdCAO10
ハロー“Hello, World” OSと標準ライブラリのシゴトとしくみ
が挙げられているが、その著者の坂井さん関連で本屋で実際手に取って
みて好きなのを選んだらどうだろうか。

12ステップで作る組込みOS自作入門
http://www.amazon.co.jp/dp/4877832394/

リンカ・ローダ実践開発テクニック
http://www.amazon.co.jp/dp/4789838072/

熱血! アセンブラ入門
http://www.amazon.co.jp/dp/479804180/
2017/06/06(火) 21:33:57.74ID:6cAGm0S8M
>>399
> ほとんどはリンカはコンパイラが勝手に呼び出す物とされているように思います
コンパイラとコンパイラドライバの区別もついてないのに背伸びしすぎ w
そもそもgccでもアセンブラを混在させたきゃインラインアセンブラで充分だしドキュメントも揃ってる
2017/06/06(火) 23:03:45.40ID:1lY7TIjFa
https://www.amazon.co.jp/Linkers-Loaders-JohnR-Levine/dp/4274064379
405デフォルトの名無しさん (ワッチョイ 2997-8pkt)
垢版 |
2017/06/06(火) 23:37:37.16ID:Qy4U0ic00
>>403
言ってることが嘘くさいよな。コンパイル、リンクの流れを知らないのは。
406デフォルトの名無しさん (ワッチョイ f9cf-q7dZ)
垢版 |
2017/06/07(水) 01:45:32.01ID:MW2os+Jx0
ヒカル TV出演「年間5億は稼ぐ勢いですね」
https://www.youtube.com/watch?v=G7qL6ftpets
第1回案件王ランキング!YouTuberで1番稼いでるのは誰だ!
https://www.youtube.com/watch?v=asF2wQ2xhjY&;t=61s
ユーチューバーの儲けのカラクリを徹底検証!
https://www.youtube.com/watch?v=FUSb4erJSXE&;t=504s
【給料公開】チャンネル登録者4万人突破記念!YouTuberの月収公開!
https://www.youtube.com/watch?v=Y7DAQ0RKilM&;t=326s
誰も言わないなら俺がYouTuberのギャラ相場を教えます
https://www.youtube.com/watch?v=E4q-vaQh2EQ&;t=118s
YouTuberになりたいのは馬鹿じゃない!YouTuberになる方法
https://www.youtube.com/watch?v=Fr0WXXZRMSQ

最高月収5000万円だとさ。年収じゃなくて「月収」な
おまえらもyoutubeに動画投稿したほうがいいぞ。副業にぴったしだ
やろうと思えばスマホがあればできるぞ
最低2年はやらないとここまではいかないだろうけど才能とアイデアと
企画力と継続力があればが大儲けできる可能性がなくもない
まだまだ他の職種に比べれば競争率は低いからオススメ
顔出したくないならラファエルみたいに仮面つければいい
407デフォルトの名無しさん (ワッチョイ f9cf-q7dZ)
垢版 |
2017/06/07(水) 01:46:59.80ID:MW2os+Jx0
ヒカル TV出演「年間5億は稼ぐ勢いですね」
https://www.youtube.com/watch?v=G7qL6ftpets
第1回案件王ランキング!YouTuberで1番稼いでるのは誰だ!
https://www.youtube.com/watch?v=asF2wQ2xhjY&;t=61s
ユーチューバーの儲けのカラクリを徹底検証!
https://www.youtube.com/watch?v=FUSb4erJSXE&;t=504s
【給料公開】チャンネル登録者4万人突破記念!YouTuberの月収公開!
https://www.youtube.com/watch?v=Y7DAQ0RKilM&;t=326s
誰も言わないなら俺がYouTuberのギャラ相場を教えます
https://www.youtube.com/watch?v=E4q-vaQh2EQ&;t=118s
YouTuberになりたいのは馬鹿じゃない!YouTuberになる方法
https://www.youtube.com/watch?v=Fr0WXXZRMSQ

最高月収5000万円だとさ。年収じゃなくて「月収」な
おまえらもyoutubeに動画投稿したほうがいいぞ。副業にぴったしだ
やろうと思えばスマホがあればできるぞ
最低2年はやらないとここまではいかないだろうけど才能とアイデアと
企画力と継続力があればが大儲けできる可能性がなくもない
まだまだ他の職種に比べれば競争率は低いからオススメ
顔出したくないならラファエルみたいに仮面つければいい
ハロウィン用でいろいろな仮装マスク売ってるからオヌヌメ
2017/06/07(水) 07:27:30.60ID:ahDmd+gPr
一番使用経験があるのがインタプリタで、次がアセンブラです。この二つは一から実用になる物を作ったことがありますが
コンパイラは既存のコードを改造するのがせいぜいで何かを一から作ったことがありません
C/C++はVC++にプロジェクトを読み込んでビルドしたり、configure→makeやgccのコマンドを叩くくらいしかできないです

>>400,402,404
全部買える余裕はないのでまずは本屋で眺めてみます

>>403
組み込み系だとアセンブラからCで書かれたコードを呼び出す例も普通にあるようです
リセットベクタから最初に実行されるコードはアセンブラで書くのが一般的みたいですし

>>401
あ、なるほど。実行する部分はOSの仕事ですね
2017/06/07(水) 11:32:37.62ID:F8quZWoL0
>一から実用になる物を作ったことがあり
を指してるのは
(自作した)インタプリタと (自作した)アセンブラ じゃなく
既存のインタプリタと既存のアセンブラによって得られた生成物
だよな?
2017/06/07(水) 11:49:04.14ID:SSzPpmQQ0
情報処理資格の組み込み・エンベッドのテキストに書いてある

宇宙産業・医療機器・産業機械などは、組み込みの高資格を持っていないと無理。
この領域では、すぐに人が死ぬから、MISRA-C に準拠していないと、使えない。
国際的に、MISRA-C 無しのCは、製品には使えない

各人が、個別のアセンブラで学ぶことは、
各人が個別の言語で話すことと同じになり、分断される

だから日本の情報処理資格では、CASL2 という抽象的なアセンブラで、議論する。
それをまねたのが、LLVM。
だから外国が、LLVMに飛びついた

>>395
を参照
411デフォルトの名無しさん (アウーイモ MMa1-8pkt)
垢版 |
2017/06/07(水) 12:42:49.70ID:AU15h8rIM
>>408
Cで作られたかどうかは関係ないだろw
2017/06/07(水) 19:23:59.78ID:vdjoMcEt0
>>408
大概の言語ならコンパイラもあるんじゃないの?py2cとかperl2cなんかもあるし。
2017/06/07(水) 20:09:08.11ID:sUBS3aGw0
QZ怒りの流れを無視した無知晒しレス
414デフォルトの名無しさん (ワッチョイ eaea-q7dZ)
垢版 |
2017/06/07(水) 23:18:34.34ID:Mt8hQ3L40
鶴亀算のプログラムが違うと言われたのですが、どこが違うか教えてくださいm(_ _)m
#include <stdio.h>
int main(void){
int a;//足の合計
int b;//頭の合計
int c;//鶴1羽の足の数
int d;//亀1匹の足の数
int x,y;
scanf("%d %d %d %d",&a,&b,&c,&d);
//全部が鶴だとする
x = c * b;
//実際の足数の合計-全部が鶴の場合の足数
x = a-x;
//亀の数
x = x / 2;
//鶴の数
y = b - x;

printf("%d %d\n",x,y);
return 0;
}
そもそも鶴亀算の計算方法がネットで調べてもよく分かりませんでした
2017/06/07(水) 23:36:19.43ID:SnVv1syS0
それだとd使ってないから正しいはずないよね

もはやC言語関係ないが
//亀の数
x=x/(d-c);

てか連立一次方程式解けないってガチな小学生?
2017/06/08(木) 00:38:33.35ID:g5GXU2ST0
またQZが自演工作を始めたよ
2017/06/08(木) 06:54:57.70ID:XoSqWmPA0
Hello!!
418デフォルトの名無しさん (ワッチョイ 0bcb-Fz1p)
垢版 |
2017/06/08(木) 17:37:09.59ID:JhfPMuMm0
https://ideone.com/iVXO9e
上のコードのどこが間違っているのか分かりません
動くようにするにはどのようにしたらよろしいですか?
2017/06/08(木) 17:55:38.25ID:B37qUMHpd
>>418
引数の個数
2017/06/08(木) 17:58:25.99ID:B37qUMHpd
https://ideone.com/OyxrXn
2017/06/08(木) 19:15:57.89ID:g5GXU2ST0
おいQZゴミコード投下をこのスレでもやるのかよ
また臭くなったなこのスレ
2017/06/08(木) 19:22:01.48ID:JhfPMuMm0
>>419
マクロの使い方じゃなくて定義の方を改変してほしいです
423デフォルトの名無しさん (ワッチョイ 9d97-Eb90)
垢版 |
2017/06/08(木) 19:40:15.68ID:HjFtHmDJ0
>>422
結局、何がしたいのか?
2017/06/08(木) 19:40:15.97ID:vowgkzVG0
https://ideone.com/rXDfUM
f3の仕様知らんから適当だけど、こんな感じか?
2017/06/09(金) 04:09:12.83ID:tFl0611n0
>>424
ありがとうございます
それを求めてました
2017/06/09(金) 11:40:03.51ID:i7mtMiOg0
おいQZ
宿題スレと同じようなレスするなよゴミ
2017/06/09(金) 16:20:13.99ID:vSS0Y+fX0
マクロ地獄w
2017/06/09(金) 20:25:14.30ID:CAB9wzmf0
>>426
Hello World!
2017/06/09(金) 23:48:48.50ID:IBAe8Zr/r
まだ一冊も買っていませんが>>397,402両氏に感謝
坂井氏の記事は判りやすくて良いですね。別件でググっていたらITmedia系列で連載しているのを発見しまして
今読んでいるところですけど大変為になります
ttp://www.itmedia.co.jp/author/174171/
2017/06/10(土) 01:59:22.10ID:zs39aG6C0
QZ怒りの感謝芸
2017/06/10(土) 08:08:29.71ID:pb8IN1oh0
>>430
巣から出てくるな
2017/06/10(土) 19:50:14.54ID:SZlbpMsi0
なんか禁止文字があるようなので画像で質問します

http://i.imgur.com/ZotbBm5.jpg
2017/06/10(土) 20:03:35.22ID:WN3QcUIY0
>>432
同一IPアドレスで複数のホストを割り当てているのだろう
だから、IPアドレスで要求しても答えられないことになる

https://ja.wikipedia.org/wiki/%E3%83%90%E3%83%BC%E3%83%81%E3%83%A3%E3%83%AB%E3%83%9B%E3%82%B9%E3%83%88
2017/06/10(土) 20:24:27.55ID:WN3QcUIY0
>>432
バーチャルホストへの対応は http 1.1からなので、リクエストヘッダーを作成し
その中にどのホストへの要求かをサーバーに伝える必要があります。
このページを参考にしてみて。

http://tomosoft.jp/design/?p=3636

サンプルソースはローカルネットワークでやっているので、
変数 httphost にはIPアドレスが指定していますが、
ここに求めるホスト名を指定すれば良いはずです。
2017/06/10(土) 20:26:42.82ID:ya4F889pd
ありがとうございます
ちょっと出てしまったので家に戻ったら
もらった情報を元に解決頑張ってみます
2017/06/10(土) 20:45:37.76ID:gQtHq0zi0
ありがとうございますwww
QZの自演感謝芸は本当にわかりやすい
2017/06/10(土) 23:40:32.38ID:IgPZpOJ50
誰が誰を煽ってるのかは分かりませんが
リクエストヘッダの記述をHTTP1.1にして
1.1の必須ヘッダのHostを設定して試してみたら
無事動作しました
ありがとうございました
2017/06/11(日) 01:17:53.70ID:3YYJxHfi0
おいQZ自演範囲拡大かよ気持ち悪い
2017/06/11(日) 09:55:13.67ID:IXRoGBtM0
>>438
巣から出てくるな
2017/06/11(日) 11:01:28.44ID:jDqQVEke0
C99の識別子について質問です。
構造体のメンバ命を「アンダーバー + 小文字アルファベット」で始まるものにするのは
仕様上、予約語と名前衝突しないことになっていますか?

「アンダーバー + 大文字アルファベット」で始まる識別子は予約されてるという記事がいくつかありましたが、小文字の場合に言及している情報は見つけられませんでした。
2017/06/11(日) 11:12:15.08ID:8e5gqfxU0
>グローバル スコープを持ち、_ で始まる名前
>_ で始まり、その次が大文字の名前
>__ で始まる名前
この3つだけなんで、アンダースコア+小文字かつメンバ名なら大丈夫
まぁ個人的には2連アンダースコアと先頭アンダースコアは避けるけど
2017/06/11(日) 11:58:31.34ID:jDqQVEke0
>>441
素早い回答有難うございます。
安心しました。

でも、ご指摘の通り使用は最小限にとどめたいと思います。
ありがとうございました
2017/06/11(日) 15:12:12.69ID:3YYJxHfi0
QZいかりの焦り
2017/06/12(月) 01:04:21.12ID:yvrc7Cbj0
QZはム板から消えろ
2017/06/12(月) 01:07:04.82ID:yvrc7Cbj0
でも、ご指摘の通り使用は最小限にとどめたいと思います。www
QZ落第のときのセリフがこれ
2017/06/12(月) 11:24:14.92ID:tv4YfZMV0
ワッチョイとD9zBでNGすりゃいいのか?
447デフォルトの名無しさん (ワッチョイ 85aa-vEzb)
垢版 |
2017/06/12(月) 11:46:58.72ID:gcWGi0lu0
QZをNGにすりゃいいんじゃない?
2017/06/12(月) 18:10:03.52ID:yvrc7Cbj0
QZ怒りのNG推奨
2017/06/12(月) 18:11:22.02ID:yvrc7Cbj0
おいQZ自演オナニーに飽き足らず
他スレで無知披露かよ
お前のような永久無職が議論できるような場所じゃないから
2017/06/12(月) 18:54:22.58ID:3CfNjtZc0
>>449
おいそれどこだよ?
451デフォルトの名無しさん (ワッチョイ e511-yTT2)
垢版 |
2017/06/12(月) 19:34:00.50ID:5L3xq22d0
%%%MC+7,8%%%

}

000-"M","LES","TUV=0.13325&/0\7&%&",

001-"23","1","0","2","7.14",[\b%7/1444*%812%2.3%7&6111\end\\]{%3%12%\br
2017/06/13(火) 17:20:53.30ID:kTA8yB7D0
よくいろいろなホームページにinlineは付けなくてもコンパイラーが最適化で自動で決めるので
付けなくていいと見かけるけれど、重要なのはinlineを書くかどうかじゃなくて
定義をヘッダーファイルにかいてinlineに出来るかソースファイルに書いて
出来ないようにするのかってことでしょ。
inlineが出来るようにするのか出来ないようにするのかの話を
inlineを書くか書かないかの話にすり替えている汚いやり方だと思いませんか?
2017/06/13(火) 18:10:46.25ID:TlpR08p20
>>452
翻訳単位という括りで見たらヘッダーファイルとかの区別は無意味だから
あなたの意見には同意しかねる
2017/06/13(火) 19:22:36.04ID:7vUqF+ijM
register 変数だって、本当にレジスタに割り当ててるか怪しいもんだ。
2017/06/13(火) 19:32:28.37ID:fqqPhx3LH
当たり前の話であって怪しくもなんともないんだが
456デフォルトの名無しさん (スププ Sd43-BT4T)
垢版 |
2017/06/13(火) 19:45:37.31ID:+kV5cJp9d
Cって関数オブジェクト的な動作ってできるっけ?
2017/06/13(火) 20:05:20.23ID:co8+PZUE0
第一級関数
https://ja.wikipedia.org/wiki/%E7%AC%AC%E4%B8%80%E7%B4%9A%E9%96%A2%E6%95%B0

>CやC++、Pascalなどのプログラミング言語は関数ポインタをサポートしており、データ構造に含めたり他の関数に引数として渡したりすることができる。
>しかし、それらの関数は一般にリフレクションなしではプログラムの実行時に動的に生成することができないため、第一級関数をサポートしているとは見なされていない。
2017/06/13(火) 20:37:39.64ID:siDT5/O8M
>>454
今時ヒントにもしてないだろ
459デフォルトの名無しさん (ワンミングク MMa3-vEzb)
垢版 |
2017/06/13(火) 22:14:31.00ID:fqqtkiftM
registerとか、メジャーなコンパイラで同じオプティマイザーを使用するC++では無くなっちゃったしな。
460デフォルトの名無しさん (スププ Sd43-BT4T)
垢版 |
2017/06/13(火) 22:26:08.47ID:+kV5cJp9d
>>457
ないってことか。ありがとうございます
2017/06/13(火) 23:50:32.05ID:Vyd7kh0w0
-O3つければ関係ナッシング
-O2でもいいかも
462デフォルトの名無しさん (ワッチョイ 9511-LnFi)
垢版 |
2017/06/14(水) 02:09:06.53ID:cctIdNvV0
http://i.imgur.com/b3A3YWl.jpg
この(お)がよく分からん
最初の段階でi=j=0だからswapさせても意味なくね?
だったら(お)でiとjずらすのか?
とも思ったが反応なし
教えてくれると嬉しい
2017/06/14(水) 02:17:07.73ID:cctIdNvV0
自己解決した
2017/06/14(水) 10:41:57.78ID:xDw396a4d
出力変換指定子について教えてください

printf("16進のffを10進に変換すると%dです\n", 0xff);

実行結果→16進のffを10進に変換すると15です

%dなどの出力変換指定子というのは、数値を文字列に変換して出力している、という理解でよろしいのでしょうか?
それとも数値を数値のまま、文字列の間に挟み込んで出力してくれている、という理解の方が合っていますでしょうか?
2017/06/14(水) 11:28:08.77ID:cB3KRwiX0
前者
2017/06/14(水) 11:36:10.60ID:H04nBmO80
http://linuxjm.osdn.jp/html/LDP_man-pages/man3/printf.3.html
%dは文字列に変換する
15じゃなく255になるかと
数値のままってのがよくわからんけど
printf( "%c", 0x41);
ならほとんどの処理系で大文字Aが表示される
%cでcharのビット数より上位のビットが
立っていた場合の挙動は知らん
2017/06/14(水) 11:37:07.78ID:H04nBmO80
失礼しますた
2017/06/14(水) 11:38:27.87ID:iafztWleH
>>464
前者。文字列にしないと文字として表示できない。
ちなみに15じゃないけどな
2017/06/14(水) 12:41:52.28ID:Xahf6/YZM
>>468
補足すると、0xffは引数にした場合 0xffffffff に拡張される
(32bit機の場合)
2017/06/14(水) 12:49:16.05ID:jUBU+j0AM
>>469
255 じゃなくて、4294967295 になるってこと?
変なの。
2017/06/14(水) 12:57:53.53ID:Xahf6/YZM
>>470
符合が付いているから255じゃない。で466のレスに繋がる(^_^)ノ
2017/06/14(水) 12:58:00.19ID:cB3KRwiX0
符号付で -1 とみなし、そこから符号を維持したまま拡張して引数に詰む
引数を引っ張り出して 符号付評価で値を文字化の結果 "-1 "
(char 型変数に 0xff を入れてて、それを printf に渡したケース)


ところでリテラルの 0xff が符号付か否かは何か規定あったっけ?
2017/06/14(水) 13:30:59.38ID:jUBU+j0AM
>>471
どこに符号が付いてるの?
(符合と符号は違うの?)
255 にしかならないけど。

>>472
char が符号付きかどうかは処理系依存なはず。
2017/06/14(水) 13:41:28.06ID:cB3KRwiX0
>>473
リテラル文字列中の文字が signed か unsigned か とは別だっけか?
あんまり出くわさないのでルーズになってるわ・・・
2017/06/14(水) 18:52:36.33ID:ROBFB8K40
0xffの型はintだよ
2017/06/14(水) 18:54:17.69ID:ROBFB8K40
int a = 255;
の時に、aが-1になったら不便でしょ?
2017/06/14(水) 18:56:15.18ID:ROBFB8K40
int a = (signed char)255;
の場合は-1になる
2017/06/14(水) 19:07:02.19ID:wXdIbuq80
比較演算子の左辺 右辺 でやらかしそうだ・・・
2017/06/14(水) 19:25:17.22ID:jUBU+j0AM
>>471
とりあえず >>469 を説明して!
2017/06/14(水) 19:56:00.75ID:7MR8m8vU0
>>464
本当に試したのか?
https://ideone.com/yMxt39

>>469
本当かね?int なんだけれども

>>472
リテラルは int なんじゃないかな?で int は別に符号拡張しない

>>479
>>469 は誤り
2017/06/14(水) 21:51:54.69ID:ROBFB8K40
リテラルが無条件でintなわけじゃない

intで表現出来る範囲はint
intを越えた場合には基本的には表現出来る最小の型になる
u, l, ul, ll, ullなどのサフィックスで明示的に変更も可能
サフィックスで作れない型はキャストして作る
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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