Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus / 2016-02

Warning about integer constant and expression

4 messages · 3 people ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Jürgen Hestermann

WIth this definition:

var  i64 : Int64;

and this code:

if i64>High(SizeInt) then

I get:
"Warning: Comparison might be always false due to range of constant and expression" And even more strange, if I convert the constant to int64 as in

if i64>int64(High(SizeInt)) then

I still get this warning.
Why?

Reply by email

Unknown author
to Jürgen Hestermann
J?rgen Hestermann wrote
if i64>int64(High(SizeInt)) then
if i64>(high(int64(SizeInt)) then

??

NOTE: No off-list assistance is given without prior approval. *Please keep mailing list traffic on the list* unless private contact is specifically requested and granted.

Reply by email

Mattias Gaertner
to Jürgen Hestermann: WIth this definition: var i64 : Int64; and this code: if i64>High(SizeInt) then I get:…
Show quoted text 16 lines
WIth this definition: var i64 : Int64; and this code: if i64>High(SizeInt) then I get: "Warning: Comparison might be always false due to range of constant and expression" And even more strange, if I convert the constant to int64 as in if i64>int64(High(SizeInt)) then I still get this warning. Why?

Because on a 64bit system SizeInt = int64.

Mattias

Reply by email

Jürgen Hestermann
to Mattias Gaertner
Mattias Gaertner wrote 21 lines
On Tue, 23 Feb 2016 18:28:29 +0100 J?rgen Hestermann wrote: > WIth this definition: > > var i64 : Int64; > > and this code: > > if i64>High(SizeInt) then > > I get: > "Warning: Comparison might be always false due to range of constant and expression" > And even more strange, if I convert the constant to int64 as in > > if i64>int64(High(SizeInt)) then > > I still get this warning. > Why? Because on a 64bit system SizeInt = int64.

Yes, you are right.
I am using 64bit free pascal only for a short while now. And because I compile for 32 bit too I will leave it as it is. Thanks for clarifying/reminding me.

Reply by email