The shift actually happens as int because the type of 1 is int, and the result is then assigned to size_t. You can instead use a wider type: size_t big = 1UL<<41; On Sat, 23 Nov 2019, 13:56 Jonny Grant, <jg@xxxxxxxx> wrote: > I see on my 64bit Ubuntu PC that size_t is 8 bytes, that is 64bits, > however I see a warning: > > $ g++-8 -Wall -Wextra -o size_t size_t.cpp > size_t.cpp: In function ‘int main()’: > size_t.cpp:11:21: warning: left shift count >= width of type > [-Wshift-count-overflow] > size_t big = 1<<40; > ^~ > > > > Same on Godbolt trunk. > Is this an issue? > > Regards, Jonny > > https://godbolt.org/z/xeefQ8 > > #include <stdio.h> > size_t big = 1<<41; > > > > Please keep my email on any replies > Jonny >